Перенаправить все страницы одного TLD на другой - PullRequest
4 голосов
/ 27 октября 2011

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

У меня есть 3 TLD для сайта, аналогично следующему:

  • www.domain.com
  • www.domain.org
  • www.domain.net

Все они находятся в одном каталоге.

Я хотел бы настроить перенаправления 301, чтобы все страницы .org и .net указывали на свои соответствующие страницы в расположении .com.

Например, domain.net/topic/page, а также www.domain.net/topic/page должны постоянно перенаправлять на www.domain.com/topic/page.

В настоящее время я использую приведенный ниже код, который перенаправляет только домашние страницы .net и .org на домашнюю страницу .com.

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

Спасибо за ваше время,

Casey

Ответы [ 3 ]

4 голосов
/ 27 октября 2011

Этот основан на вашем примере с незначительными изменениями:

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

NC, R=301 и L довольно очевидны. NE не используется для экранирования и предотвращает двойное экранирование переменных строки запроса. В большинстве случаев ^(.*) не требуется /.

Примечание. Браузер будет кэшировать 301 ответ на постоянное перенаправление. В противном случае вы можете не увидеть результат внесенных вами изменений.

1 голос
/ 27 октября 2011
RewriteCond %{HTTP_HOST}   domain\.(org|net) [NC]
RewriteRule ^/(.*)         http://www.domain.com/$1 [L,R=301]

Есть много других способов написания Cond, вот как я это сделал - положительное сравнение.Ваше сравнение является отрицательным, но у него есть недостаток: если кто-то не отправит заголовок узла, он будет перенаправлен навсегда, плюс вам не нужно перечислять все домены для перенаправления.Также вы можете добавить правило для перенаправления .com без www, если хотите.

Для правила трюк - это () в выражении - он захватывает эту часть URL для последующего использования с $1

0 голосов
/ 27 октября 2011
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]

Это перенаправляет каждый запрос на www.domain.com, включая querystring и request-uri, если хост не www.domain.com

...