Лучше всего иметь какую-то логику на стороне сервера, поэтому, когда запрос поступает на example.com
, проверьте реферер. Если реферером является www.example.com
, тогда не выполняйте перенаправление обратно на www.example.com
, отправляйте их куда-нибудь еще или просто отображайте для них сайт, отправьте их в подпапку на www.example.com
или в другую папку.
Также, если вы зарегистрируете эти запросы, вы сможете получить хорошую статистику о том, сколько пользователей приходят с вашего www
] и по-прежнему получает перенаправление. В конце концов, это число должно стать довольно низким.
Также не забудьте добавить заголовки истечения срока действия к этим 301 - тогда у вас не будет проблемы, описанной в ошибке FireFox, с которой вы связались.
Заявление об ограничении ответственности: я являюсь автором http://www.yes-www.org/ , и я рад, что вам это нравится.
You ' Мы правильно определили здесь серьезную проблему, связанную с кешированием 301 ответа на стороне клиента и, возможно, даже прокси-сервером. (К счастью, поисковые системы довольно быстро улавливают любые изменения, так что здесь не о чем беспокоиться.)
О кешировании, RFC 2616 говорит следующее :
Получен ответ со статусом код 200, 203, 206, 300, 301 или 410 МОЖЕТ быть сохранен в кэше и использоваться в ответ на последующий запрос с учетом механизма истечения срока, если директива управления кешем не запрещает кеширование.
Интересно, ] браузеры различаются по тому, действительно ли они кэшируют 301 ответ . Независимо от того, что вы в конечном итоге делаете, у вас почти наверняка появятся пользователи, которым нужно будет очистить кеш своего браузера.
Учитывая все это, я бы подошел к проблеме следующим образом:
Измените перенаправление www.example.com -> example.com
на www.example.com -> temp.example.com
, и, конечно, убедитесь, что адрес temp
работает как псевдоним для веб-сайта.
Пусть он будет работать в течение нескольких недель или месяцев. (И не забудьте истечь заголовки на этом 301!)
Дайте ему достаточно времени, пока вы не поймете, что браузеры большинства людей узнали о новой переадресации на temp.example.com
и забыли о старой, которая идет на example.com
.
На на этот раз вы можете перенаправить example.com -> www.example.com
, не создавая цикла. (За исключением тех немногих, у кого все еще есть кэш старого перенаправления: очень плохо.)
В то же время отключите перенаправление на temp
, но оставьте этот псевдоним работающим еще некоторое время. Когда вы заметили, что к temp
мало или совсем нет доступа, вы можете закрыть temp
.