Перенаправить все страницы одного ДВУ в другой

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

У меня есть 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

Это основано на вашем примере с незначительной модификацией:

 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 постоянный ответ на перенаправление будет кэшироваться браузером, поэтому время от времени очищайте кеш браузера во время тестирования. В противном случае вы не увидите результат внесенных изменений.

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

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

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

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

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