2009-06-08 5 views
3

ich nicht bekommen:Wie kann eine URL wie http: //localhost/index.php/articles/edit/1/my-first-article ohne .htaccess funktionieren?

http://localhost/index.php/articles/edit/1/my-first-article

Diese URL wird in der Kohana framework documentation als Beispiel erwähnt. Ich stöberte in den Dateien meiner Installation herum, und es gibt keinen .htaccess neben meinem eigenen, der damit nichts zu tun hat.

Also, wie kann es sein, dass eine index.php aufgerufen wird, aber dann, als Parameter, sieht das Zeug wie hinzugefügte Verzeichnisse der URL? Das sieht nicht "echt" aus.

Oder funktioniert das native PHP/Apache/HTTP-Zeug eigentlich? Wie ich es verstehe, sage ich immer "Hey, ein Verzeichnis!". Macht wirklich keinen Sinn für mich ... wie ist das möglich? Oder haben sie irgendwo einen .htaccess, den ich einfach nicht sehen/finden kann?

Antwort

2

In PHP können Sie die Daten nach dem Dateinamen mit der $_SERVER["PATH_INFO"] Variable erhalten. Dadurch können Sie grundsätzlich Informationen abrufen, ohne GET-Variablen verwenden zu müssen. Das bedeutet, dass Google und Co. glauben, dass Sie statische Seiten verwenden. Dies ist im Grunde eine Alternative zu mod_rewrite, die häufig aktiviert ist, während mod_rewrite häufiger nicht aktiviert ist.

Das kann für Sie offensichtlich sein, aber es war nicht sofort für mich, das funktioniert nicht richtig auf Indexseiten, es sei denn, Sie verwenden den Dateinamen. Zum Beispiel wird http://example.com/test/my/get/params nicht funktionieren, während http://example.com/test/index.php/my/get/params wird.

10

Von den Apache docs:

AcceptPathInfo Richtlinie

Diese Richtlinie legt fest, ob Anforderungen, die Pfadangaben Hinter, die einen tatsächlichen Dateinamen (oder nicht vorhandene Datei folgt in einem bestehenden Verzeichnis) wird akzeptiert oder abgelehnt. Die nachlaufenden Pfadnameninformationen können für Skripts in der Umgebungsvariablen PATH_INFO zur Verfügung gestellt werden.

Angenommen, die Position /test/zeigt auf ein Verzeichnis, das enthält nur die einzige Datei here.html. Dann Anfragen für /test/here.html/more und /test/nothere.html/more beide sammeln /more als PATH_INFO.

Also ich nehme an, dass diese Einstellung irgendwo in httpd.conf aktiviert ist. Beachten Sie, dass dies wie mod_rewrite an mehreren Stellen aktiviert/konfiguriert werden kann - see here.

0

Wahrscheinlich hier nicht der Fall, und schon gar nicht zu empfehlen, und wahrscheinlich nicht die richtige Antwort ...

ABER ...

ich Leute die Anfrage verwenden 404 Seiten habe gesehen, zu analysieren und dann Fügen Sie die richtige Seite mit diesen Informationen hinzu.

1

Ich verwende nicht Kohana, also weiß ich nicht, ob meine Methode von Nutzen ist, aber wenn ein Server keine .htaccess-Dateien (oder Rewrite-Regeln) unterstützt, generiert mein 'Framework' URIs so :

http://www.domain.com/?/articles/edit/1/my-first-article (das bemerkt?)

Es ist ein ähnliches Verfahren ist vom Frosch-Framework verwendet, nur $_SERVER['REQUEST_URI'] analysieren (oder $_SERVER['HTTP-X-REWRITE-URL'] auf Windows-Servern) und explodieren auf dem '/'.

Diese Methode ist völlig unabhängig umschreiben und erzeugt noch mehr oder weniger SEO freundliche URI

Hoffnung ist es irgend Sie verwenden.