2015-03-20 3 views
0

У меня возникли проблемы с файлом htaccess. Я пытаюсь использовать правила перезаписи для создания виртуального хоста псевдо-стиля на моем сервере хостинга Apache.htaccess проблема конфигурирования виртуального хоста псевдо-стиля

У меня есть 3 доменов под одной учетной записи, и я хочу, чтобы достичь следующего:

  • Если не существует правило, то идти к корню (domain1.co.uk)
  • Если domain2.co.uk установите каталог на d1
  • Если domain3.co.uk установит каталог в d2
  • Независимо от домена, если www. отсутствует, добавьте его.

файл у меня есть на данный момент выглядит следующим образом:

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

RewriteCond %{HTTP_HOST} ^domain2.co.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^www.domain2.co.uk$ [OR] 
RewriteRule ^(.*)$ /d2/$1 

RewriteCond %{HTTP_HOST} ^domain3.co.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^www.domain3.co.uk$ [OR] 
RewriteRule ^(.*)$ /d3/$1 

Это первоначально выглядело, как это работает, за исключением всех доменов, кажется, идут в первое правило и прямое к/d2. В результате, если domain1.co.uk, domain2.co.uk или domain3.co.uk вводятся, то все они переходят к domain1.co.uk.

Любые мысли?

ответ

1

Вы помещаете [ИЛИ] по каждому из вторых правил. Он инструктирует Apache заглянуть в следующее правило, если это не удастся. Когда оба правила терпят неудачу, он переходит к следующему, который не существует. Таким образом, ваш RewriteRule запускается в любом случае. Это было бы эквивалентно выполнению IF something OR somethingElse OR, что бессмысленно.

Удалите [OR] со своего второго правила, и оно должно работать.

0

Я бы прямо использовал первое доменное имя в первом правиле, и вы должны сообщить первому правилу игнорировать остальные 2 домена. Также нет необходимости в [OR], чтобы проверить на www. Вы можете сделать это одно условие.

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} !^(www\.)?domain(2|3)\.co\.uk$ 
RewriteRule ^(.*)$ http://www.domain1.co.uk/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.co\.uk$ 
RewriteRule ^(.*)$ /d2/$1 [L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain3\.co\.uk$ 
RewriteRule ^(.*)$ /d3/$1 [L]