не www .htaccess редирект - игнорировать другие субдомены - PullRequest
7 голосов
/ 12 апреля 2010

У меня есть перенаправление .htaccess для "не www", как это:

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

это работает. Но у меня есть также несколько поддоменов, кроме www. Например, если я позвоню http://shop.example.com, он перенаправит меня на: http://www.shop.example.com

Я не хочу записывать субдомены в файл .htaccess, он должен работать автоматически, просто игнорировать все что угодно, кроме www и '', например:

if subdomain =='' -> redirect to www.HTTP_HOST....
elseif subdomain !='' && subdomain !='www' -> do nothing.

спасибо!

Ответы [ 3 ]

10 голосов
/ 27 апреля 2010

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

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

А также принять во внимание HTTPS:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
1 голос
/ 27 апреля 2010

попробуйте это:

Options +FollowSymlinks

RewriteEngine On

RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www\.(.*)//((s)on|s.*)$ [NC]

RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]

Только что попробовал с internetagentur.drupal-webmaster.de (поддомен) - основной без www.

0 голосов
/ 21 мая 2012

Если вам нужно решение php, вы можете использовать что-то похожее на это:

define('URL', 'yourdomain.com/');

// fix : impose www rule
if (strpos($_SERVER['SERVER_NAME'], 'www') === false ) {
    header('Location: http://www.'.URL.$_SERVER['REQUEST_URI']);
    die();
}

Это также перенаправило бы на первоначально запрошенную страницу.

...