Пожалуйста, проверьте / улучшить мой план перезаписи .htaccess без www на www

Запуск многосайта WP с клиентом, который может использовать собственное доменное имя. Отлично работает - за исключением случая, когда клиент не использует мои серверы имен и просто имеет запись A, указывающую на статический IP-адрес WP.

Иногда такое случается, когда клиентский DNS имеет тонну служебных записей (например, Office 365), он Просто безопаснее оставить DNS там.

Когда я контролирую DNS, я могу использовать псевдоним не WWW для WWW, что делает WP многосайтовым. Когда клиент просто использует указатель записи A, многосайтовый WP отключается по входящему не-WWW запросу и попадает на страницу регистрации для мультисайта. Ему действительно нужен «www», чтобы работать правильно (к сожалению).

Я решаю для каждого клиента, выполняя это в .htaccess:

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

, который пока что, кажется, отлично работает.

Вопросы:

  1. Работает ли этот метод кажется разумным?

  2. Есть ли лучший способ справиться с этим, учитывая проблему, которую я вижу?

  3. Если бы я хотел сделать эту перезапись универсальной для обработки любого входящего домена (пока этот домен не не включает мое базовое доменное имя мультисайта!) - мог бы кто-нибудь покажет мне, как сформировать условие / правило?

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

1
задан 6 January 2017 в 15:37
2 ответа

Когда я контролирую DNS, я могу использовать псевдоним не-WWW для WWW, что делает работу многосайтовой WP счастливой.

Не совсем понимаю, что вы подразумеваете под «псевдонимом», но, вероятно, вам нужно реализовать какое-то каноническое перенаправление не из WWW в WWW, даже когда вы управляете DNS?

  1. Кажется ли этот метод разумным?

Итак, этот тип перенаправления действительно кажется разумным. Казалось бы, создание дополнительных VirtualHost потребует гораздо больше усилий. (?)

  1. Есть ли лучший способ справиться с этим, учитывая проблему, которую я вижу?

Как упоминалось в комментариях, клиент может установить запись A на www.example .com , и сайт будет доступен только из субдомена www . Но это, наверное, нежелательно. Так что, в любом случае, вам придется решить проблему канонизации домена на своей стороне, что потребует перенаправления 301.

  1. Если бы я хотел сделать эту переписываемую общую для обработки любого входящего домена (при условии, что этот домен не включает мое базовое доменное имя мультисайта!) - может ли кто-нибудь показать мне, как сформировать условие / правило?

В конфигурации вашего сервера вы можете сделать что-то вроде следующего, чтобы обработать любое ], но исключить базовый домен:

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

Если HTTP_HOST не начинается с www. затем перенаправить на тот же хост с www. добавлено.

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

1
ответ дан 3 December 2019 в 23:36

Вы можете просто добавить отдельный виртуальный хост для example.com , который просто обслуживает 301, отправляя клиента на www.example.com .

0
ответ дан 3 December 2019 в 23:36

Теги

Похожие вопросы