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?

Foi útil?

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".

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