URLs limpos do pobre homem vs. Mod_Rewrite

8

Na empresa em que trabalho, estamos nos preparando para criar um novo site, e há algumas divergências sobre como criar URLs limpos. Durante o ano passado, fizemos pequenas melhorias em nosso site existente, antecipando um redesenho em larga escala, que envolveu as URLs limpas do Poor Man's.

Exemplo:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

Para o novo site, fala-se sobre o uso de mod_rewrite:

  1. O usuário solicita http://www.example.com/products/widgets/
  2. mod_rewrite os envia para http://www.example.com/index.php?page=products/widgets
  3. index.php envia para a página real http://www.example.com/products/widgets.php

Não estou conseguindo ver como todo esse rigamaroll está agregando algum valor. O funcionário a favor do mod_rewrite está reivindicando que menos diretórios equivalem de alguma forma a uma manutenção mais fácil.

Nenhuma de nossas páginas existentes faz uso de variáveis ​​na string de consulta. Todo o conteúdo está nos arquivos reais. Planejamos colocar algum conteúdo no banco de dados, como comunicados à imprensa e próximas feiras em que participaremos, mas a grande maioria das páginas usará apenas o PHP para incluir HTML comum como cabeçalho, rodapé e navegação. Eu definitivamente gostaria de usar mod_rewrite para conteúdo dinâmico como esse.

Há algum grande benefício que sinto falta de que deveríamos usar o mod_rewrite para tudo? As URLs limpas do pobre homem são suficientes para as partes que não são do banco de dados do nosso site?

Scott
fonte
Eu tento assim ... muito aborrecimento para um URL limpo ... #

Respostas:

3

O processo de três etapas descrito acima parece redundante e inútil, conforme indicado acima. Se na etapa 3 o index.php os leva para a página "real", por que se preocupar com mod_rewrite? Fazer isso negará as vantagens que o mod_rewrite está oferecendo. Ou seja, um URL amigável ao mecanismo de pesquisa e manutenção mais fácil do site. Se você parar na etapa dois, se beneficiará do mod_rewrite por ter apenas uma página para manter, mas ela pode servir um número praticamente ilimitado de páginas e ser transparente para o usuário e os mecanismos de pesquisa, pois eles só veem o URL na etapa 1.

John Conde
fonte
4

É um mito que "/ pagename" ou "/pagename.htm" sejam melhores para os mecanismos de pesquisa do que "/pagename.php". Pelo menos no Google, definitivamente não há base para isso (e eu assumo os outros também). Da mesma forma, mesmo "index.php? Page = pagename" não precisa ser reescrito como "/ pagename" - os mecanismos de pesquisa podem entender esses URLs sem problemas, e o Google até registrou que prefere que os usuários não reescrevam desnecessariamente ( http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html ). Portanto, desde que você não crie URLs infinitos com parâmetros de URL, os URLs reescritos não são necessariamente mais amigáveis ​​aos mecanismos de pesquisa do que os URLs não reescritos .

Dito isto, os usuários podem preferir URLs legais em vez de URLs feias / complexas. Se sua principal preocupação é ter URLs agradáveis ​​nos resultados da pesquisa, consulte o microformato de trilhas de navegação que o Google agora suporta ( http://googlewebmastercentral.blogspot.com/2010/09/rich-snippets-testing-tool- Improvements.html ), pois geralmente oferecem uma experiência do usuário ainda melhor em relação aos URLs nos resultados da pesquisa. Isso não resolverá o problema dos usuários que desejam vincular URLs de boa aparência, mas, desde que seus URLs não sejam infinitamente complexos (e seus exemplos não são), provavelmente não fará uma diferença mensurável se você os reescrever para isso. caso de uso. Se não houver diferença mensurável, provavelmente não faz sentido gastar tempo projetando e mantendo essa configuração.

John Mueller
fonte
1

O que você chama de "URLs limpas do pobre homem" são apenas URLs limpas implementadas através do sistema de arquivos. Você pode ter esses tipos de URLs usando mod_rewrite, assim como o segundo tipo de URL sem mod_rewrite.

URLs limpos são exatamente o que o nome indica - URLs limpos ou com aparência limpa. Ambos

http://yoursite/foo/bar

e

http://yoursite/foo/bar.php

são URLs limpos. O termo "URLs limpos" não especifica nenhuma implementação específica. Você pode implementar URLs limpos gerando páginas .html em cache sempre que o site for atualizado, se desejar. O mod_rewrite simplesmente permite dissociar a estrutura da URL da estrutura do arquivo sem redirecionamentos ou quadros.

Pelo que parece, você não está atualmente executando um site orientado a banco de dados. E, embora possa tecnicamente se qualificar como um site dinâmico, provavelmente é mais do lado estático do espectro se você estiver usando o PHP principalmente apenas para incluir cabeçalhos / rodapés. Isso é bom para sites pequenos que raramente precisam ser atualizados, mas à medida que o site aumenta, você precisa implementar um CMS real.

Onde o mod_rewrite brilha é quando você começa a considerar a manutenção. Em vez de ter centenas de arquivos php para cada página do produto (com muito código redundante), você pode simplesmente ter um único script que lida com todas as solicitações. Mas se você não tiver mais um mapeamento individual dos arquivos .php reais para as páginas da web exibidas, precisará usar algo como mod_rewrite para rotear as solicitações de página de maneira inteligente, mantendo a ilusão de que a estrutura de arquivo / diretório está sendo há.

Portanto, não é com o subdiretório extra que você deve se preocupar. É o fato de você estar criando um script .php separado para todas as páginas do seu site.

Lèse majesté
fonte
1

"URLs limpos" geralmente significa que nenhum arquivo ext; ajuda a ocultar os detalhes da implementação do visualizador. A vantagem disso é que, quando você decide mudar seu site de, digamos, PHP para Ruby on Rails, pode fazê-lo sem alterar uma única URL.

Agora, embora seja possível executar seu site com o ASP.net e ter nomes de arquivos que terminem em .php, se você quiser manter seus URLS intactos, parece fazer mais sentido fazê-los de tal maneira que o problema nunca precise surgir .

http://www.example.com/news/2010/10/our-new-url-system/

Pode sempre ser uma boa URL, mesmo se você alterar completamente a arquitetura subjacente, ou passar de arquivos estáticos para dinâmicos .. ou o contrário.

Erik
fonte
0

Parece-me que todo o seu conteúdo em um banco de dados seria muito mais rápido e fácil de manter do que vasculhar um grande sistema de arquivos toda vez que você precisar fazer atualizações. Como John Mueller mencionou acima, o bom URL não fará uma grande diferença em suas classificações, no entanto, você deve considerar o uso de Mod_Rewrite para manter seus URLs existentes e o valor deles. IE se:

example.com/widgets/index.php tem 1.000 links apontando para ele e você muda para ser example.com/pages/widgets.php corre o risco de perder muito desse valor (é claro que você pode redirecioná-lo, mas é discutível se ou não, que passará o mesmo valor)

Minha recomendação seria que, se você continuar a veicular conteúdo estático, continue usando o sistema de arquivos, se estiver convertendo-o em conteúdo dinâmico, use o Mod_Rewrite para manter sua estrutura atual de URL intacta. Ou, se não for possível manter a estrutura atual, use o Mod_Rewrite para criar uma estrutura que seja estável para futuras atualizações.

Joshak
fonte
0

Como já foi dito, ter .phpou ?page=realmente não importa. O que importa é se você estiver fazendo algo assim:

http://www.example.com/index.php?page=13

Hello71
fonte