У меня есть веб-сайт с поддержкой Django, и я пытаюсь решить проблему с каноническим именем хоста. Я хочу, чтобы www.example.com перенаправил на example.com. Я попробовал оба метода, найденные в документации Apache здесь (прокрутите вниз до канонических имен хостов).
В настоящее время я пробую метод mod_rewrite, и у меня есть это в контейнере виртуального хоста:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*)$ http://example.com/$1 [L,R=301,NE]
Это работает для меня, за исключением одного случая. Только в Firefox, если я набираю www.example.com
в браузере, он перенаправляет, и я вижу это в строке URL: example.com//
(обратите внимание на 2 завершающих слеша).
Однако что-то вроде этого будет работать правильно: www.example.com/news/
перенаправляется на example.com/news/
.
Я вижу это только по корневому URL в Firefox. Похоже, что он отлично работает на Windows под Chrome, IE9 и Opera (может быть, эти браузеры есть двойной слеш?). Мой Mac, использующий друга, говорит, что это нормально в Safari, но он также видит проблему в Firefox.
Что касается настроек Django, я использую значение по умолчанию APPEND_SLASH=True
. Я не знаю, имеет ли Django какое-либо отношение к этому, но я уже пробовал правила mod_rewrite, подобные приведенным выше, на статических сайтах HTML, и всегда кажется, что это работает.