http://www. на http: // перенаправление вообще не работает - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу довольно простую функцию, я хочу, чтобы мой сайт работал, когда кто-то ставит www. перед моим доменным именем. Я предпочитаю перенаправлять все http://www. запросы на http:// без каких-либо сложных действий.

Я пробовал два способа для этого, и ни один из них не работает желательно. Первый вариант состоял в том, чтобы просто добавить следующую команду переписывания движка в .htaccess сайта (что, как я подтвердил, работает)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]

Я пробовал многочисленные варианты этого кода, и ни один из них ничего не делал. Даже после сброса кеша моего браузера и доступа через Tor, если я захожу на свой сайт с префиксом www., он просто не загружается, и Firefox выдает мне ошибку «сервер не найден».

Второе, что я попробовал, это удалить все коды перезаписи и просто добавить DNS-запись A с хостом www, который указывает на мой IP-адрес. Немного подождав, сайт теперь работает! Тем не менее, это было невероятно непоследовательным, потому что, если бы я получил доступ к www.example.com, тогда он удалил бы www., но если бы я перешел на www.example.com/page.html, он бы не удалил его (но он все равно работал). Еще одна странная проблема заключается в том, что если бы я набрал www.example.com/folder/page, он отправил бы мне на www.example.comfolder/page.

У кого-нибудь есть советы, что мне делать или что я могу делать неправильно?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

(Это не обязательно ответ, но моей репутации пока недостаточно, чтобы оставить комментарий.)

Предыдущий комментарий выглядит так, как будто он должен выполнить свою работу, поэтому с перезаписью происходит нечто неожиданное.

Вы можете попробовать включить ведение журнала перезаписи на низком уровне, чтобы увидеть, что происходит с правилом перезаписи. Увеличьте уровень ведения журнала на один уровень, если проблема не обнаружена. Обратите внимание, что регистрация действий mod_rewrite может привести к созданию действительно больших журналов, поэтому целесообразно попробовать это на тестовом стенде или на относительно простом хосте.

# Enable mod_rewrite
RewriteEngine On

# RewriteLogLevel: Controls verbosity of mod_rewrite log
#                  0=off, 9=max
RewriteLogLevel 2

Как примечание и imo, я бы сделал это в файле конфигурации, а не в файле .htaccess, потому что это правило должно применяться ко всему сайту на этом хосте / vhost. Это также делает невозможным для Apache выполнение перезаписи, игнорируя файл .htaccess.

0 голосов
/ 07 сентября 2018

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

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^example\.com 
RewriteRule (.*) http://example.com/$1 [R=301,L] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...