Question

J'ai remarqué, que parfois (surtout lorsque mod_rewrite ne sont pas disponibles) ce schéma de chemin est utilisé:

http://host/path/index.php/clean_url_here
--------------------------^

semble au travail, au moins dans Apache, où index.php est appelé, et on peut interroger la partie /clean_url_here via $_SERVER['PATH_INFO']. PHP même type de cette fonctionnalité fait de la publicité. En outre, par exemple, le CodeIgniter cadre utilise cette technique par défaut pour leurs URL.

La question: Comment est la technique fiable? Y at-il des situations où Apache ne remet pas index.php mais tente de résoudre le chemin? Qu'en est-lighttpd, nginx, IIS, AOLServer?

Une question ServerFault? Je pense qu'il est a plus à voir avec l'aide de cette fonction à l'intérieur du code PHP. Par conséquent, je demande ici.

Addendum: Comme suggéré par VolkerK, une extension raisonnable à cette question est: Comment une influence programmeur l'existence de $_SERVER['PATH_INFO'] sur différents types de serveurs

Était-ce utile?

La solution

Je pense que cette question qui est tout aussi adapté pour stackoverflow et serverfault. Par exemple. Je en tant que développeur ne peut vous dire que pathinfo est aussi fiable que tout-entrée utilisateur (ce qui signifie qu'il peut contenir pratiquement tout) et votre script peut ou non recevoir en fonction de la version du serveur web et configuration:

Apache: AcceptPathInfo
IIS: par exemple, AllowPathInfoForScriptMappings et d'autres
et ainsi de suite et ...

Mais les admins de serveur peuvent éventuellement vous dire quels paramètres vous pouvez vous attendre « dans le monde réel » et pourquoi ces paramètres sont préférés.
La question devient: Quelle influence avez-vous (ou le userbase prévu) avez sur la configuration du serveur

.

Autres conseils

AcceptPathInfo besoins être activé pour que cette travail.

D'après mon expérience, je dirais que PATH_INFO généralement disponibles dans des environnements d'hébergement Web normales et des configurations de serveur - même sur IIS - mais en de rares occasions, ce n'est pas. Lors de la construction d'une application qui est censé être déployable sur autant de plateformes que possible, je ne ferais pas confiance à un niveau path_info codé en dur.

Dès que je peux, j'essayer de construire une fonction enveloppe build_url() qui, en fonction d'un paramètre de configuration, utilise soit

  • la www.example.com/index.php?clean_url=clean_url_here URL premières
  • le mécanisme de path_info www.example.com/index.php/clean_url
  • mod_rewrite www.example.com/clean_url

et l'utilisation que dans toutes les URL d'application les émet.

Il pourrait y avoir des scripts naïfs (auto-linking par exemple) qui ne reconnaît pas le format de cette URL. réduisant ainsi la probabilité que des liens vers votre contenu seront créés.
Étant donné que les modèles d'expression réguliers cultivés sur place commune pour ces tâches, le risque de défaillance est tout à fait réel.

Techniquement, ces URL sont très bien. SEO-sage, ils sont 'moins parfait'.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top