2009-06-02 11 views
1

Ich versuche, Seitenanker auf einer Website einzurichten, die mod_rewrite (Apache2 auf Ubuntu Server 9.04) verwendet.Page Anker mit mod_rewrite?

Meine .htaccess-Datei sieht wie folgt aus:

RewriteEngine On 
RewriteRule ^information.php/([A-Za-z0-9-]+)/?$ information.php?display=$1 [NC,NE] 

Wenn ich die Abfrage wurde regelmäßig URL ist so etwas wie folgt aussehen: http://mydomain/information.php?display=faq#cost

Ich hoffe, so etwas zu bekommen: http://mydomain/information/faq/cost

Ist das möglich? Mein Verständnis ist, dass Modrewrite Seitenanker ignoriert, und dass der Browser damit umgeht? Ich vermute, dass ich irgendwie mod_rewrite verwenden kann, um die Ankerinformationen mit der Anfrage zu verknüpfen, aber ich konnte nichts finden, was dies dokumentiert, und ich habe erfolglos versucht, es selbst stundenlang zu schreiben.

Danke!

Antwort

3

Eigentlich, wenn Sie wollen, dass die resultierende URL einen Anker haben, dann ja, es ist möglich. Vergiss nicht, dass # in Apache configs den Beginn eines Kommentars markiert.

Wenn was Sie wollen ist so - Benutzer gibt

http://example.com/page/anchor
und wird umgeleitet zu
http://example.com/?p=page#anchor
- müssten Sie 301 Redirect, oder so etwas, so dass es für den Benutzer nicht transparent sein würde.

Fazit: Während es möglich ist, eine solche Umleitungsregel zu schreiben, kann sie nicht vollständig serverseitig gemacht werden. Also ich denke, Sie könnten /information/faq auf /information.php?display=faq zeigen und dann URLs wie:

http://example.com/information/faq#foo
verwenden, die fast das sind, was Sie wollen, und sie nicht Caching durcheinander bringen.

(Whoa, es ist Mitternacht schon?)

+1

+1, Guter Punkt, falsch verstanden habe ich die Frage und dachte, dass es umgekehrt war. –

+0

Hmm, ich habe die Frage auch falsch gelesen - während diese Umleitung möglich ist, wird sie für den Benutzer nicht transparent sein, da sie nicht serverseitig erfolgen kann, sondern nur HTTP-Umleitungen. – grawity

+0

Ja, natürlich. Eine HTTP-Weiterleitung wird benötigt. –