Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как перенаправить на URL-адрес, содержащий якорь (#)?

Автор вопроса: Brian MoeskauОтветов: 2

Мне нужно взять стандартные входящие URL-адреса и переписать перенаправить их на определенные якоря на одной странице (имя входящей html-страницы становится именем якоря). Например, правило будет таким:

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

Итак, этот URL:

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

...станет:

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

Само правило работает нормально, но символ # кодируется в адресной строке браузера так:

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

который, конечно, не работает корректно в качестве якоря. Есть ли способ в .htaccess заставить его не кодировать хэш? Я также пытался экранировать его, как \#, но это не имеет значения.

url-rewritingencodingmod-rewrite

Ответы

Ответ 1 · рейтинг 9 · Pat

Попробуйте флаг noescape (NE) в своем правиле:

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

Ответ 2 · рейтинг 5 · inerte

Используйте флаг NE или No Escape:

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы