Запуск многосайта 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>
, который пока что, кажется, отлично работает.
Вопросы:
Работает ли этот метод кажется разумным?
Есть ли лучший способ справиться с этим, учитывая проблему, которую я вижу?
Если бы я хотел сделать эту перезапись универсальной для обработки любого входящего домена (пока этот домен не не включает мое базовое доменное имя мультисайта!) - мог бы кто-нибудь покажет мне, как сформировать условие / правило?
Мне нравится жестко кодировать реальный домен, потому что это гарантирует, что ничего больше не будет затронуто, но я могу представить, как только у меня будет несколько сотен таких, это может стать глупостью.
Когда я контролирую DNS, я могу использовать псевдоним не-WWW для WWW, что делает работу многосайтовой WP счастливой.
Не совсем понимаю, что вы подразумеваете под «псевдонимом», но, вероятно, вам нужно реализовать какое-то каноническое перенаправление не из WWW в WWW, даже когда вы управляете DNS?
- Кажется ли этот метод разумным?
Итак, этот тип перенаправления действительно кажется разумным. Казалось бы, создание дополнительных VirtualHost потребует гораздо больше усилий. (?)
- Есть ли лучший способ справиться с этим, учитывая проблему, которую я вижу?
Как упоминалось в комментариях, клиент может установить запись A
на www.example .com
, и сайт будет доступен только из субдомена www
. Но это, наверное, нежелательно. Так что, в любом случае, вам придется решить проблему канонизации домена на своей стороне, что потребует перенаправления 301.
- Если бы я хотел сделать эту переписываемую общую для обработки любого входящего домена (при условии, что этот домен не включает мое базовое доменное имя мультисайта!) - может ли кто-нибудь показать мне, как сформировать условие / правило?
В конфигурации вашего сервера вы можете сделать что-то вроде следующего, чтобы обработать любое ], но исключить базовый домен:
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.
Вы можете просто добавить отдельный виртуальный хост для example.com
, который просто обслуживает 301, отправляя клиента на www.example.com
.