2009-02-09 5 views
8

У меня VirtualHost, что выглядит примерно так:Как динамически перенаправить WWW на основе URL-адресов для не-WWW URL-адресов с несколькими доменами в одном VirtualHost

<VirtualHost *:80> 

    ServerName domain1.com 
    ServerAlias www.domain1.com domain2.com www.domain2.com 

</VirtualHost> 

Когда кто-то посещает www.domain1.com/test , они должны быть перенаправлены на:

domain1.com/test 

Когда кто-то посещает www.domain2.com/test, они должны быть перенаправлены на:

domain2.com/test 

Мои текущие RewriteRules отсутствуют.

Edit: Вот что я получил до сих пор:

# Rewrite www to non-www 
RewriteEngine on 
RewriteCond %{HTTP_HOST} www\.%{HTTP_HOST}$ [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301] 

Очевидно, что это создает бесконечный цикл перенаправления.

ответ

6

Ваш RewriteCond немного завораживает. Я удивлен, что он вообще что-то делает, поскольку, похоже, он пытается сопоставить хост www.domain1.com с шаблоном www\.www.domain1.com. Эти директивы работали на меня:

# Redirect www to non-www 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1$1 [L,R=301] 
+0

Отлично, спасибо! –

10

Не нужно переписывать.

<VirtualHost *:80> 
    ServerName domain1.com 
    ServerAlias domain2.com 
    ... real vhost settings ... 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.domain1.com 
    Redirect permanent/http://domain1.com/ 
</VirtualHost> 
<VirtualHost *:80> 
    ServerName www.domain2.com 
    Redirect permanent/http://domain2.com/ 
</VirtualHost> 
+0

Это перенаправит весь трафик на домен1.com, мне нужно, чтобы трафик оставался на соответствующих сайтах, а удалял «www». –

+0

Хорошо, обновлено - шаблон одинаковый, конечно. – bobince

+0

Я не верю, что это сохранит структуру URL, не так ли? Я бы предположил, что www.domain2.com/test1 будет перенаправлять на http://domain2.com, а не на желаемый http://domain2.com/test1 –

0

Вы можете иметь несколько VirtualHosts в конфигурационном файле, так что вы должны изменить конфиг к этому:

<VirtualHost *:80> 
    ServerName domain1.com 
    ServerAlias www.domain1.com 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName domain2.com 
    ServerAlias www.domain2.com 
</VirtualHost> 

Вы можете добавить еще один VirtualHost для каждого домена, который вы хотите сделать.

+0

Это просто настраивает псевдонимы для каждого домена, не перенаправляет трафик с сайта www.domain1.com на домен1.com. –

 Смежные вопросы

  • Нет связанных вопросов^_^