Wie kann eine URL wie http: //localhost/index.php/articles/edit/1/my-first-article Arbeit ohne .htaccess?
Frage
ich das nicht bekommen:
http: //localhost/index.php/articles/edit / 1 / my-first-Artikel
Diese URL wird als Beispiel erwähnt in der Kohana Rahmen Dokumentation . Ich stieß in den Akten meiner Installation herum, und es gibt keine .htaccess neben meinem eigenen, die nichts damit zu tun hat.
Also, wie kann es sein, dass ein index.php genannt wird, aber dann, als Parameter, sehen die Dinge wie hinzugefügt Verzeichnisse an die URL? Das sieht nicht „real“.
Oder ist dies nur, wie nativen PHP / Apache / HTTP Sachen tatsächlich funktioniert? Wie ich es verstehe, / sagt immer: „Hey, ein Verzeichnis“. Macht wirklich null Sinn für mich ... wie ist das möglich? Oder haben sie irgendwo eine .htaccess haben, dass ich einfach nicht sehen / finden?
Lösung
In PHP können Sie die Daten nach dem Dateinamen erhalten mit dem $_SERVER["PATH_INFO"]
Variable. Auf diese Weise können Sie im Grunde Informationen erhalten, ohne GET-Variablen zu verwenden, was bedeutet, Google und Co werden denken, Sie statische Seiten verwenden. Dies ist im Grunde eine Alternative mod_rewrite
die oft aktiviert, während mod_rewrite
öfter nicht aktiviert ist.
Dies können Sie klar sein, aber es ist mir nicht sofort, das funktioniert nicht richtig auf Indexseiten, wenn Sie die Dateinamen verwenden. Zum Beispiel http://example.com/test/my/get/params
wird nicht funktionieren, während http://example.com/test/index.php/my/get/params
Willen.
Andere Tipps
Von der Apache docs :
AcceptPathInfo Richtlinie
Diese Direktive steuert, ob Anfragen, die nachlauf enthalten Pfadname Informationen, die ein folgt tatsächliche Dateinamen (oder nicht vorhandene Datei in einem bestehenden Verzeichnis) wird angenommen oder abgelehnt. der hintere Pfadangaben gemacht werden können zur Verfügung, um Skripts in der PATH_INFO Umgebungsvariable.
Zum Beispiel übernimmt die Lage / Test / Punkte in einem Verzeichnis, enthält nur die einzelne Datei here.html. Dann fordert für /test/here.html/more und /test/nothere.html/more beides / Mehr als PATH_INFO.
Also gehe ich davon aus dieser Einstellung wie in httpd.conf irgendwo aktiviert ist. Beachten Sie, dass diese, wie mod_rewrite können in einer Reihe von Orten aktiviert / konfiguriert werden - siehe hier .
AcceptPathInfo wird für den Server eingeschaltet. :)
Ich bin nicht mit Kohana, so dass ich weiß nicht, ob meine Methode von Nutzen sein wird, aber wenn ein Server nicht .htaccess-Dateien (oder Rewrite-Regeln) mein ‚Rahmen‘ erzeugt URI wie folgt unterstützt:
http://www.domain.com/? / articles / edit / 1 / my-first-Artikel (man beachte das?)
Es ist ein ähnliches Verfahren durch den Frosch-Framework verwendet, analysiert nur $_SERVER['REQUEST_URI']
(oder $_SERVER['HTTP-X-REWRITE-URL']
auf Windows-Servern) und explodiert auf dem ‚/‘.
Diese Methode ist völlig neu schreiben unabhängig und erzeugt noch mehr oder weniger SEO freundliche URI
Hoffe, es ist von Nutzen für Sie.
Wahrscheinlich hier nicht der Fall, und schon gar nicht zu empfehlen, und wahrscheinlich nicht die richtige Antwort ...
...
Ich habe Leute nutzen 404 Seiten gesehen, die Anforderung zu analysieren und dann schließen die rechte Seite mit diesen Informationen.
Siehe PATH_INFO in CGI-Umgebungsvariablen rel="nofollow .