htaccess перезаписать - PullRequest
       0

htaccess перезаписать

1 голос
/ 25 августа 2010

У нас есть доменное имя с различными TLD.

Давайте используем example.com в качестве основного URL-адреса и перенаправляем example.biz, example.net, example.org на example.com.

У нас было следующее в файле .htaccess, и оно работало очень хорошо:

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

Вы заметили, что любой не-www будет перенаправлен на www.

Однако мы только добавилисубдомен: str.example.com, и чтобы сделать его доступным, нам пришлось закомментировать вышеприведенные правила.

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

  1. non-www и non-str to www
  2. non-.com TLDs .com

Несколько случаев, чтобы прояснить мои средства:

  1. example.com -> www.example.com
  2. example.net -> www.example.com
  3. abc.example.com -> www.example.com
  4. str.example.com -> str.example.com
  5. str.example.org -> str.example.com

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 25 августа 2010

Это немного более запутанно, но это спасает вас от потенциального дополнительного перенаправления:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^(www|str)\.        [NC,OR]
RewriteCond %{HTTP_HOST} !\.com$              [NC]
RewriteCond %{HTTP_HOST}  (.*?)\.[A-Z]+$      [NC]
RewriteCond %1            ^(([^.]+)\.)?example$
RewriteCond %2            ^(str)              [OR]
RewriteCond www           ^(www)
RewriteRule ^ http://%1.example.com%{REQUEST_URI} [R=301,L]

Обратите внимание, что он также ожидает от вас только одного ДВУ, поэтому example.co.uk здесь не сработает, например. Это был не один из ваших примеров, поэтому я не пытался объяснить это.

1 голос
/ 25 августа 2010

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

RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.[^/.]+$
RewriteCond %1 !^(www|str)$
RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.([^/.]+)$
RewriteCond %2 !=com
RewriteRule ^ http://%1.example.com%{REQUEST_URI} [L,R=301]
...