\ Я чертовски почти вытягиваю свои волосы, пытаясь понять это сегодня вечером. Я надеюсь, что кто-то сможет мне помочь.
У меня есть 3 TLD для сайта, похожее на следующее:
Все они расположены в одном каталоге.
Я хотел бы настроить 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