Итак, в моем основном домене «domain.com» я создал несколько поддоменов из cPanel, например «sub1.domain.com» и «sub2.domain.com». Их реальное местоположение на сервере - «domain.com/sub1» и «domain.com/sub2».
Теперь я хочу перенаправить не www на www с помощью .htaccess, и это то, что у меня сейчас есть:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>
Это работает. Когда кто-то входит в domain.com, он будет перенаправлен на www.domain.com. Однако, когда кто-то вводит sub1.domain.com, он будет перенаправлен на www.domain.com/sub1 - чего я не хочу, он должен быть в sub1.domain.com.
Что мне добавить в файл .htaccess для этого?
Вы можете исключить каждый sub1
, sub2
индивидуально так;
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^sub1\.domain\.com [NC]
RewriteRule ^(.*) - [L]
RewriteCond %{HTTP_HOST} ^sub2\.domain\.com [NC]
RewriteRule ^(.*) - [L]
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>
Или просто укажите, что вы хотите только перенаправить domain.com
к www.domain.com
с RewriteCond
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Это работает для всех доменов, за исключением субдоменов. радоваться, веселиться.