2009-08-18 13 views
6

Ich muss standard eingehende URLs nehmen und umschreiben umleiten sie auf bestimmte Anker auf einer einzelnen Seite (eingehende html Seitenname wird der Anker Name). Zum Beispiel würde die Regel so aussehen:Wie zu einer URL weitergeleitet werden, die einen Anker (#) enthält?

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [R] 

Also diese url:

http://foo.com/files/bar.html 

... würde:

http://foo.com/test.html#bar 

Die Regel selbst funktioniert gut, aber die Zeichen # wird in der Adresszeile des Browsers codiert in:

http://foo.com/test.html%23bar 

was natürlich nicht korrekt als Anker funktioniert. Gibt es einen Weg in .htaccess, um es zu zwingen, den Hash nicht zu verschlüsseln? Ich habe auch versucht, es zu entkommen wie \#, aber das macht keinen Unterschied.

Antwort

9

Versuchen Sie, die noescape (NE) Flagge in der Regel:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE, R] 
+0

Super, danke. Ich dachte, es müsste etwas Einfaches sein, aber Google zeigte mir nicht den Weg;) –

5

Verwenden NE oder No Escape Flagge:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE,R]

+3

Pat schlug mich um 57 Sekunden;) Lass die Welt wissen, dass SOs "neue Antworten" Warnung länger dauert! – inerte

+1

Sieg für Pat! :) – Pat

+1

+1 für den "Verlierer", weil sein Code ein Byte kürzer ist :-) – Olaf

Verwandte Themen