Я почти уверен, что это частично противоположно этому вопросу , но он состоит из двух частей с некоторыми дополнительными сложностями.
Я недавно унаследовал сайт для организации (назовем его theorganization.com
) с установленным Joomla! , а кто-то просто пошел и купил дополнительный домен (anevent.com
) для мероприятия, которое он проводит с ожиданием, что мы можем просто «указать» это прямо в соответствующем разделе нашего существующего сайта. Да, простая «маскировка» могла бы выполнить это в одном направлении, но я хотел бы канонизировать URL-адрес и отобразить его в обоих направлениях, используя mod_rewrite
, и т. Д. (Это , а не бесконечный цикл: одно направление - это перенаправление 301; другое - маска URL.)
Я хочу разместить информацию о мероприятии на нашей существующей Joomla! установить в разделе, доступном по theorganization.com/eventname/
, и сопоставить его с новым доменом. Примечание: Joomla! использует сам перезапись, поэтому , а не будет физический каталог eventname
в пределах корпуса каталога theorganization.com
. (Не уверен, если / как это повлияет на что-либо здесь.)
В частности, я хочу всех запросов, сделанных либо на theorganization.com/eventname
, либо на anevent.com
(с или без www
или конечной косой чертой), чтобы обслуживать контент, который Joomla! обычно присваивается значение theorganization.com/eventname/
при отображении URL-адреса как www.anevent.com/
. Конечно, все подкаталоги и файлы ниже этих уровней также должны отображаться соответствующим образом.
После просмотра документов Apache mod_rewrite
я попытался сделать следующее.
Для theorganization.com
:
RewriteEngine On
# STRIP "www" IF PRESENT (undesired, but necessary for now due to other issues)
RewriteCond %{HTTP_HOST} ^www.theorganization.com$ [NC]
RewriteRule ^(.*)$ http://theorganization.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/eventname/?(.*)$ [NC]
RewriteRule ^http://(www\.)theorganization.com/eventname/?(.*)$ "http://www.anevent.com/$2" [R=301,L]
# ...
# ... default Joomla! .htaccess code here ...
После долгих испытаний я обнаружил, что забыл Joomla! по умолчанию имеет свои собственные изменения в .htaccess
, и я случайно их перезаписал. (К счастью, я нашел замену .) Но второе (оперативное) перенаправление, кажется, не действует, как и должно. Что я могу делать не так?
Для anevent.com
:
RewriteEngine On
# ADD "www" IF MISSING
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# UNCONDITIONALLY DEFER ALL REQUESTS HERE TO theorganization.com/eventname/
RewriteRule ^(.*)$ http://theorganization.com/eventname/$1 [L]
Это, кажется, работает довольно хорошо (исходя из предположения, что я могу заставить работать первый). Тем не менее, безусловное правило в последней строке, кажется, действует как 301/302 или что-то подобное и загружает http://theorganization.com/eventname/FOO
. Как я могу изменить это, чтобы вместо этого добиться «маскировки», чтобы пользователи могли видеть только http://www.anevent.com/FOO
в своем браузере, но по-прежнему были направлены на тот же контент?