Frage

bemerkte ich, dass manchmal (vor allem, wenn mod_rewrite nicht verfügbar ist) dieser Weg Schema verwendet:

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

Das scheint zu arbeiten, zumindest in Apache, wo index.php genannt wird, und man kann den /clean_url_here Teil über $_SERVER['PATH_INFO'] abfragen. PHP selbst Art wirbt diese Funktion. Auch zum Beispiel der CodeIgniter Framework verwendet diese Technik als Standard für ihre URLs.

Die Frage: Wie zuverlässig ist die Technik? Gibt es Situationen, in denen Apache nicht nennen index.php sondern versucht, den Weg zu lösen? Was ist lighttpd, nginx, IIS, AOLServer?

Ein ServerFault Frage? Ich denke, es ist mehr bekommt bei der Verwendung dieser Funktion innerhalb PHP-Code zu tun. Deshalb bitte ich hier.

Nachtrag: Wie VolkerK vorgeschlagen, eine angemessene Verlängerung auf diese Frage lautet: Wie kann ein Programmierer Einfluss auf die Existenz von $_SERVER['PATH_INFO'] auf verschiedenen Servertypen

War es hilfreich?

Lösung

Ich denke, dass dies eine Frage, die gleichermaßen für Stackoverflow und serverfault geeignet ist. Z.B. Ich als Entwickler kann Ihnen nur sagen, dass pathinfo ist so vertrauenswürdig wie jede Benutzer-Eingabe (das heißt, es praktisch alles enthalten kann) und das Skript kann oder kann es nicht erhalten auf der Webserver Version und Konfiguration abhängig:

Apache: AcceptPathInfo
IIS: z.B. AllowPathInfoForScriptMappings und andere
und so weiter und weiter ...

Aber Server-Admins möglicherweise kann Ihnen sagen, welche Einstellungen Sie können erwarten, dass „in der realen Welt“ und warum werden diese Einstellungen bevorzugt.
Die Frage lautet also: Wie viel Einfluss haben Sie (oder die erwartete totzukriegen) auf der Serverkonfiguration

.

Andere Tipps

AcceptPathInfo Bedürfnisse zu aktivieren, um diese Funktion zu haben.

Aus meiner Erfahrung würde ich sagen, PATH_INFO ist in der Regel in normalen Web-Hosting-Umgebungen und Server-Setups - auch auf IIS - aber in seltenen Fällen ist es nicht. Wenn eine Anwendung erstellen, die angeblich ausfahrbaren sein auf so viele Plattformen wie möglich, würde ich nicht vertrauen path_info auf einem Niveau hartcodiert.

Jedes Mal, wenn ich kann, ich versuche, eine Wrapper-Funktion build_url() zu bauen, dass abhängig von einer Einstellung in der Konfiguration verwendet entweder

  • die rohe URL www.example.com/index.php?clean_url=clean_url_here
  • die path_info Mechanismus www.example.com/index.php/clean_url
  • mod_rewrite www.example.com/clean_url

und verwenden, die in allen URLs die Anwendung aussendet.

Es könnte naive Skripte sein (auto-Verknüpfung zum Beispiel), dass diese URL des Format nicht erkennen. Dadurch Verringerung der Wahrscheinlichkeit, dass Links auf Ihre Inhalte erstellt werden.
Da regulärer Ausdruck Muster home-grown für diese Aufgaben gemeinsam ist, ist die Wahrscheinlichkeit des Scheiterns ganz real.

Technisch sind diese URLs in Ordnung. SEO-weise, sie sind 'weniger perfekt'.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top