2012-06-20 3 views
1

Как мне создать файл .htaccess, чтобы он добавил www в начало адреса mysite.com, но не добавил www. к началу других поддоменов, таких как test.mysite.com? Мой файл .htaccess в настоящее время выглядит следующим образом:.htaccess Только для www. Subdomain

Options -Multiviews 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php 

ответ

2

Что-то вроде:

RewriteCond %{HTTP_HOST} ^mysite.com 

Вместо

RewriteCond %{HTTP_HOST} !^www\. 
+0

Это было бы так просто, если бы не использование ttp: //www.% {HTTP_HOST}/$ 1, потому что это означает, что домен может быть переменным ... –

+0

Хотя я могу ошибаться, и тогда ваш ответ ОПРЕДЕЛЕН, самый простой и самый очевидный выбор –

+0

Отсутствие конфигурируемости _could_ преодолеть, установив надлежащее 'SERVER_NAME', и в этом случае строка, скорее всего, будет' RewriteCond% {HTTP_HOST} ^% {SERVER_NAME} ' – Wrikken

0

Я просто не знаю правила штопать, чтобы получить только символы для доменное имя, поэтому я попробую это, но он может потерпеть неудачу по некоторым темам:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9\-]+(\.[a-z]{2,4})+$ 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php 

Это приведет к тому, что все домены START с одним словом и TLD будут перенаправлены на www.samedomain.tld, но субдомены не будут удалены ...

+0

Мое решение позволяет вам запускать этот код на многодоменном сайте, но имеет некоторые ограничения. Например, основные домены с 4 символами или менее (например: sex.com все равно будут попадаться на my.sex.com, потому что мой будет соответствовать первому правилу, а .sex.com ударит по правилу повтора в конце) –

+1

'. Museum 'самый длинный текущий tld, который я знаю, и есть много стран, использующих двойники, например' .co.uk' ... – Wrikken

+0

Двойники обрабатываются (...) + в конце, но музей, это новый. В этом случае мы не можем использовать мое решение ... –