Правила .htaccess с поддоменом и двумя доменами - PullRequest
1 голос
/ 09 октября 2009

У меня есть домен domain.com, который я использую в качестве основного домена. У меня также есть второй домен domain2.com, который я автоматически перехожу на domain.com

Это делается с помощью .htaccess:

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

Я хочу настроить поддомен sub.domain.com, но с этим текущим .htaccess посещение sub.domain.com отправляет меня на www.domain.com/sub

Я нашел этот вопрос, который решает эту проблему, но сводит на нет мою первую проблему domain2.com, указывающую на domain.com

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Я ищу способ объединить два правила:

www.domain.com => www.domain.com
domain.com => www.domain.com
domain2.com => www.domain.com
sub.domain.com => sub.domain.com

Ответы [ 4 ]

1 голос
/ 19 октября 2009
RewriteCond %{HTTP_HOST} !^([^.]+\.)example\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]

Должен решить вашу проблему: D

1 голос
/ 09 октября 2009

Попробуйте это правило:

RewriteCond %{HTTP_HOST} !^([^.]+\.)?example\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]
1 голос
/ 17 октября 2009

Будет ли это просто работать:

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^sub\.domain\.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
1 голос
/ 09 октября 2009

Вам нужно сжать ваши RewriteConds так, чтобы они соответствовали только определенным именам хостов, которые вы хотите сопоставить и изменить, например '^ domain \ .com $' и '^ (www \.)? Domain2 \ .com $ ». На данный момент они оба будут совпадать почти с чем угодно, поэтому они будут мешать.

Но нужно ли это делать в .htaccess? Гораздо чище сделать с помощью простого перенаправления в конфигурации вашего основного сайта:

<VirtualHost *:80>
    ServerName www.domain.com
    ...your real config...
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain2.com
    ServerAlias domain2.com
    ServerAlias domain.com
    ServerAlias sub.domain.com
    Redirect permanent http://www.domain.com/
</VirtualHost>

, который также извлекает неприятные вещи, связанные с развертыванием, из корневого каталога вашего приложения.

(Я не мог понять, действительно ли вы хотите, чтобы поддомен перешел в другую папку; если вы это сделаете, удалите строку sub.domain.com выше и поместите ее в собственный VirtualHost:)

<VirtualHost *:80>
    ServerName sub.domain.com
    Redirect permanent http://domain.com/sub/
</VirtualHost>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...