Quão confiáveis são Uris como /index.php/seo_path
-
26-09-2019 - |
Pergunta
Percebi que às vezes (especialmente onde o mod_rewrite não está disponível) esse esquema de caminho é usado:
http://host/path/index.php/clean_url_here
--------------------------^
este parece trabalhar, pelo menos em Apache, onde index.php
é chamado, e pode -se consultar o /clean_url_here
parte via $_SERVER['PATH_INFO']
. PHP até tipo de anúncio esse recurso. Além disso, por exemplo, o Codeigniter A estrutura usa essa técnica como padrão para seus URLs.
A questão: Quão confiável é a técnica? Existem situações, onde o Apache não chama index.php
Mas tenta resolver o caminho? E quanto a LightTPD, Nginx, IIS, Aolserver?
Uma pergunta do serverfault? Eu acho que tem mais a ver com o uso desse recurso dentro do código PHP. Portanto, pergunto aqui.
Termo aditivo: Conforme sugerido por Volkerk, uma extensão razoável a esta questão é: como um programador pode influenciar a existência de $_SERVER['PATH_INFO']
em vários tipos de servidor?
Solução
Eu acho que é uma pergunta igualmente adequada para o StackOverflow e o ServerFault. Por exemplo, como desenvolvedor, só pode dizer que o Pathinfo é tão confiável quanto qualquer entrada do usuário (o que significa que pode conter praticamente qualquer coisa) e seu script pode ou não recebê-lo, dependendo da versão e da configuração do servidor da web:
Apache: AcepThinfo
IIS: por exemplo Permitir pathinfoforscriptMappings e outros
E assim por diante...
Mas os administradores do servidor podem dizer quais configurações você pode esperar "no mundo real" e por que essas configurações são preferidas.
Portanto, a pergunta se torna: quanta influência você (ou a base de usuário esperada) tem na configuração do servidor.
Outras dicas
AcepThinfo precisa ser ativado para ter esse funcionamento.
Da minha experiência, eu diria PATH_INFO
é Geralmente disponível em ambientes normais de hospedagem na web e configurações de servidores - mesmo no IIS -, mas em raras ocasiões, não é. Ao criar um aplicativo que deveria ser implantável no maior número possível de plataformas, eu não confiaria em Path_info em um nível codificado.
Sempre que posso, tento construir uma função de invólucro build_url()
isso, dependendo de uma configuração, usa
- o URL bruto
www.example.com/index.php?clean_url=clean_url_here
- o mecanismo path_info
www.example.com/index.php/clean_url
- mod_rewrite
www.example.com/clean_url
e use isso em todos os URLs que o aplicativo emite.
Pode haver scripts ingênuos (reticulação automática, por exemplo) que não reconhecem o formato desse URL. Diminuindo assim a chance de os links para o seu conteúdo serão criados.
Como os padrões de expressão regulares caseiros são comuns para essas tarefas, a chance de falha é bastante real.
Tecnicamente, esses URLs estão bem. Em termos de SEO, eles são "menos perfeitos".