7 Stimmen

Wie leitet man zu einer URL um, die einen Anker (#) enthält?

Ich muss standardmäßige eingehende URLs nehmen und umschreiben. sie umleiten, um bestimmte Anker auf einer einzelnen Seite anzusteuern (der Name der eingehenden HTML-Seite wird zum Namen des Ankers). Die Regel würde z. B. so lauten:

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

Also diese Url:

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

...werden würde:

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

Die Regel selbst funktioniert gut, aber das #-Zeichen wird in der Adressleiste des Browsers zu kodiert:

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

was natürlich nicht korrekt als Anker funktioniert. Gibt es eine Möglichkeit, in .htaccess zu erzwingen, dass der Hash nicht verschlüsselt wird? Ich habe auch versucht, ihn wie folgt zu entschlüsseln \# aber das macht keinen Unterschied.

9voto

Pat Punkte 24608

Versuchen Sie es mit dem Flag noescape (NE) in Ihrer Regel:

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

5voto

inerte Punkte 1104

Verwenden Sie NE oder Kein Escape-Flag:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X