2009-08-18 12 views
6

Muszę przyjmować standardowe adresy URL i przepisać przekierować je do miejsca docelowego konkretnych kotwic na jednej stronie (nazwa strony przychodzącej html staje się nazwą kotwicy). Na przykład, reguła będzie tak:Jak przekierować do adresu URL zawierającego kotwicę (#)?

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

Więc ten url:

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

... staną:

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

sama reguła działa dobrze, ale znak # zostanie zakodowany w pasku adresu przeglądarki do:

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

, który oczywiście nie działa poprawnie jako kotwica. Czy jest jakiś sposób w .htaccess, aby zmusić go do nie kodowania hasza? Próbowałem też uciekać przed nim jak \#, ale to nie ma znaczenia.

Odpowiedz

9

Spróbuj flagę noescape (NE) w regule:

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

Awesome, dzięki. Pomyślałem, że to musi być coś prostego, ale Google nie pokazywał mi drogi;) –

5

Zastosowanie NE lub Nie flag Escape:

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

+3

Pat pokonał mnie przez 57 sekund;) Niech świat wie, że ostrzeżenie "nowe odpowiedzi" SO trwa dłużej! – inerte

+1

Victory for Pat! :) – Pat

+1

+1 dla "przegrany", ponieważ jego kod jest jeden bajt krótszy :-) – Olaf