Pergunta

Vejo frequentemente URLs (reescritos) sem ID, como em algumas instalações do wordpress.Qual é a melhor maneira de conseguir isso?Exemplo:site.com/product/osome-product-name/ Talvez para manter a variedade de nomes de páginas e IDs em cache, para evitar a consulta de banco de dados em todas as solicitações de páginas?Como evitar conflitos e quais são os outros problemas no uso de URLs sem IDs?

Foi útil?

Solução

Usar um ID apresenta o mesmo enigma, na verdade - você está apenas verificando um valor diferente em seu banco de dados.A parte “nome de algum produto” do seu URL acima também é algo único.Algumas pessoas os chamam de slugs (Wordpress, também links permanentes).Portanto, em vez de consultar o banco de dados em busca de uma linha que possua um ID específico, você estará consultando o banco de dados em busca de uma linha que possua um slug específico.Você não precisa saber o ID para recuperar o registro.

Outras dicas

Contanto que os nomes dos produtos sejam exclusivos, isso não deve ser um problema.Não demorará mais (pelo menos não significativo) para procurar um produto por um nome exclusivo e não por um ID numérico, desde que a coluna esteja indexada.

O Wordpress possui um campo na tabela wp_posts para o slug.Quando você cria a postagem, ele cria um slug a partir do título da postagem (se é assim que você configurou), substituindo espaços por travessões (ou acho que você pode configurá-lo para sublinhados).Também remove apóstrofos, vírgulas ou outros enfeites.Acredito que isso também limita o comprimento total da bala.

Então, resumindo, não está decodificando dinamicamente a URL no título da postagem - há um campo na tabela que corresponde diretamente à versão da URL do nome da postagem.

Como você pode ou não saber, os URLs estão sendo reescritos com o Apache mod_rewrite módulo.Conforme mencionado aqui, o Wordpress está, em segundo plano, atribuindo um slug após limpar o título ou nome da postagem.

Mas, para responder à sua pergunta, o que você está descrevendo é o recurso "Pretty Permalinks" do Wordpress e você pode aprender mais sobre ele no Códice Wordpress.Versões mais recentes do Wordpress fazem a reescrita internamente (sem edição .htaccess, wp_rewrite em vez de).É por isso que você verá o mesmo conjunto de regras para qualquer estrutura de link permanente.

Porém, se você pesquisar um pouco, poderá encontrar as antigas regras de reescrita.Por exemplo:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L]

Levará um URL como /2008/01/01/ e direcioná-lo para /index.php?year=2008&monthnum=01&day=01 (e carregue uma categoria de data).

Mas, como mencionado, uma página como product-name existe apenas porque o Wordpress já limpou o título do post e o armazenou como um campo no banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top