#mod-rewrite #anchor
#переписать мод #привязка
Вопрос:
Я хочу переписать URL на URL с якорями
from "topic/14/599" to "topic.php?id=14#599"
это мой текущий rewriterule:
RewriteRule ^topic/([0-9] )/([0-9] )$ /topic.php?id=$1#$2 [NE,L,R]
это работает нормально, но переписанное правило находится в адресной строке!
таким образом, адресная строка браузера меняется с «topic / 14 / 599» на «topic.php?id=14#599»
Я бы предпочел сохранить «упрощенную» версию в адресной строке, однако rewriterule не работает без L, R-флагов, я просто не могу заставить его работать. (если я просто перепишу topic / 14 в topic.php?id=14 без каких-либо флагов, это работает просто отлично)
Обновить:
RewriteRule ^topic/([0-9] )/([0-9] )$ topic.php?id=$1amp;a=$2 [NE]
теперь работает! адресная строка выглядит для пользователя следующим образом: mydomain.com/topic/14/599
и внутренне оно перенаправляется на topic.php?id=14amp;a = 599, и как только страница загружена, javascript переходит к элементу с id = 599!
Ответ №1:
Поскольку якоря обрабатываются на стороне клиента, нет способа перезаписать якорь «молча», как вы пытаетесь сделать — якорь должен быть в видимом пользователем URL в какой-то момент. Вы могли бы переписать topic/14/244
на topic/14#244
в качестве перенаправления и topic/14
внутренне переписать на topic.php?id=14
, но вы не можете сделать и то, и другое за один шаг.
Комментарии:
1. Спасибо! Я думал, что смогу сделать все с помощью mod_rewrite 😉 Теперь я перенаправлю на topic.php?id =1 amp; a = 32, а затем использую javascript, чтобы установить фокус на якорь! (и адресная строка выглядит так, как я хотел: topic/1/32)