2013-09-06 3 views
1

Не могли бы вы помочь мне как перенаправить ТОЛЬКО http://example.com до http://www.example.com?Как перенаправить только www с htaccess

У меня есть некоторые поддомены (http://sub1.example.com; http://sub2.example.com ...), и я не хочу, чтобы они также перенаправлялись.

Это мой .htaccess

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

При том, что я получаю то, что, когда я получить доступ к http://example.com он правильно перенаправляет http://www.example.com, но когда я доступ к http://sub1.example.com перенаправляет к http://www.www.sub1.example.com/sub1_folder/sub1_folder/

Заранее спасибо

+0

Попробуйте 'RewriteCond% {HTTP_HOST}^Пример \ .com $' только цели, что один конкретный имя хоста без субдомена. – CBroe

+0

@ CBroe Это сработало, спасибо. Позвольте мне спросить вас - возможно ли иметь что-то более общее? Вместо '^ example \ .com $', возможно ли иметь что-то, что не указывает на этот конкретный URL-адрес? –

+0

В [документации] (http://httpd.apache.org/docs/2.2/ru/mod/mod_rewrite.html#rewritecond) упоминается только использование переменных сервера для TestString, а не для CondPattern. Если они будут работать в шаблоне (не знаю), _and_, если ваш SERVER_NAME был установлен только для базового домена (example.com в этом примере), тогда это может сработать. – CBroe

ответ

1

У вас может быть более общий шаблон регулярного выражения, если вы знаете, что ваш домен будет XXX.com:

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

Или еще лучше:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^[^.]+\.[a-z]{2,4}$ [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
Смежные вопросы