2013-11-06 2 views
1

В настоящее время у меня есть переписывание в файле htaccess, и мне нужно учитывать jumplink.Как переписать ссылку перехода с htaccess

Проблема, которую я верю, у меня есть, что «#» продолжает распознаваться как комментарий.

Я видел здесь вопросы, предлагающие использовать флаги [NE] или [R], но либо я их неправильно использую, либо они не делают то, что мне нужно.

Мой текущий рабочий перезапись:

RewriteRule ^news/([^/]*)/([^/]*)/*$ display_news.php?yid=$1&mid=$2 [L]

Моя идея состояла в том, чтобы добавить еще один сегмент в конце URL-то вроде этого:

RewriteRule ^news/([^/]*)/([^/]*)/1/*$ display_news.php?yid=$1&mid=$2#jumplink [L]

С моим использованием флаги [NE] и [R] я заменил ? на 3F и $ с 24 для шестнадцатеричных кодов, заданных http://www.asciitable.com/. Должен ли я прилагать эти коды к специальным скобкам или чему-то еще? Как бы Apache знал, что я буквально не имею в виду 3F или 24.

Текущее поведение, когда я пытаюсь поместить эти шестнадцатеричные коды в свой файл, я получаю внутреннюю ошибку сервера.

Если есть более элегантный способ учета jumplinks в файле htaccess, я все уши.

EDIT:

Как предложено здесь приведены примеры ссылок на то, что я ожидал.

http://website.com/news/2013/11 будет отображаться на display_news.php?yid=2013&mid=11

и

http://website.com/news/2013/11/1 будет отображаться на display_news.php?yid=2013&mid=11#jumplink

Но я хотел бы, чтобы адрес, чтобы остаться в формате http://website.com/news/2013/11/1 и просто карту на странице.

ответ

1

Это должно работать:

RewriteRule ^news/([^/]*)/([^/]*)/1/?$ /display_news.php?yid=$1&mid=$2#jumplink [L,NC,QSA,NE,R=302] 

Я предлагаю вам представить пример URI, которые вы хотите, чтобы соответствовать и то, что является вашей целевой URI.

+0

Вышеприведенный пример добавляет путь к домену моего сайта и изменяет адрес в строке URL. Что-то вроде 'http: //website.com/var/www/website.com/display_news.php? Yid = 2013 & mid = 09 # revisit' –

+0

Хорошо, вы можете попробовать отредактированный код сейчас. – anubhava

+0

Хорошо, поэтому с '[R = 302]' он показывает мой URL-адрес именно так, как я хотел.По какой-то причине он, похоже, не перескакивает на часть страницы, в которой у меня есть ''. Это, вероятно, входит во что-то вне сферы моего первоначального вопроса. –

1

Часть URI, которую вы переписали, совершенно не имеет смысла для сервера. Фрагмент URL (часть #jumplink) используется браузерами и javascript, работающими в браузерах. Это даже не передается php.

Вы можете попробовать добавить флаг R, чтобы перенаправить внешний браузер, но я предполагаю, что это не то, что вы хотите.

+0

Да, я просто пытаюсь перейти на определенную часть страницы. Я не пытаюсь получить доступ к '# jumplink' по серверному коду вообще. –

+1

@ d.lanza38 Тогда вам придется что-то делать со стороны браузера. Возможно, используйте некоторый javascript, чтобы узнать, что это за место, и если он отсутствует, «#» затем добавьте его. –

+0

Возможно, мне что-то не хватает, не браузеры врожденно поддерживают функциональность #jumplink, когда она добавляется к URL-адресу? Mod переписывает в сторону, я знаю, если у вас есть якорный тег с id = "jumplink", и вы добавляете '# jumplink' в URL-адрес, он будет автоматически загружать страницу туда, где был бы этот тег привязки. Я просто пытаюсь сделать то же самое, но я не знаю, как переопределить поведение по умолчанию '#' в файле htaccess (что является комментарием). Кажется, простой '\ #' не делает этого трюка. –

Смежные вопросы