Сохранять привязку при перенаправлении поддомена (IE)

Firefox:
http://example.com/about/#anchor -> http://www.example.com/about/#anchor

Internet Explorer 6–8:
http://example.com/about/#anchor -> http://www.example.com/about/

Почему в IE опускается якорь и что с этим делать? (Строка запроса не удаляется, только часть #xyz)

Является ли мой единственный вариант - заголовок PHP или перенаправление javascript? Спасибо за все подсказки.

Обновление: похоже, хэш не отправляется на сервер. Будет ли хорошим решением сочетание заголовка PHP 301 и перенаправления javascript (с location.hash)?


person dani    schedule 13.03.2010    source источник
comment
Якорь не отправляется на сервер stackoverflow.com/questions/1665200/, поэтому на стороне сервера вы ничего не можете сделать. Это n-я ошибка IE. Я попробовал сейчас, и Firefox и Chrome выполняют правильные перенаправления без сохранения привязки. К сожалению, Safari4 СОХРАНЯЕТ привязку как IE8.   -  person Marco Demaio    schedule 14.03.2011


Ответы (3)


Была аналогичная проблема в Tomcat / JSP, не знаю о PHP. В Tomcat правило заключалось в том, что #anchor предназначен только для браузера / пользовательского агента, поэтому вы не можете его получить. Мое обходное решение заключалось в использовании Javascript на странице вместо перенаправления. Мой совет был бы в том, что если вы не можете в ближайшее время заставить его работать на PHP, начните пробовать обходной путь Javascript.

person jqa    schedule 13.03.2010

Якоря никогда не отправляются на сервер, поэтому ни одно серверное решение не может их сохранить.

person ceejayoz    schedule 13.03.2010

Во время перенаправления на стороне сервера можно использовать только якоря на стороне сервера. У них должен быть идентификатор (хотя я не уверен, должны ли они создаваться программно)

В качестве альтернативы вы можете передать параметр и использовать onload для перемещения фокуса на идентификатор или гиперссылку.

person MASTER0FY0U    schedule 01.09.2011