перенаправление htaccess 301

#mod-rewrite #redirect #url-rewriting

#перезапись мода #перенаправление #url-переписывание

Вопрос:

Я пытаюсь перенаправить 301

http://www.domain.com/page.html

Для

http://subdomain.domain.com/page.html

и попытался:

 redirect 301 /page.html http://subdomain.domain.com/page.html
  

Проблема в том, что и домен, и поддомен указаны на один и тот же каталог, и это приводит к перенаправлению таким образом, что оно никогда не завершится.

также безуспешно пытался:

 RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^page.html$ "http://subdomain.domain.com/page.html" [R=301,L]
  

Комментарии:

1. значит, это просто из тщеславия?…

2. Включен ли у вас mod_rewrite? И вы написали: RewriteEngine On, перед этими правилами?

3. да, mod_rewrite включен, и у меня включен RewriteEngine. В первом случае я думаю, что это просто цикл.

4. … и во втором случае я думаю, что правило работает только для папок?

5. проверьте журнал доступа apache, чтобы убедиться, что у вас действительно есть цикл перенаправления

Ответ №1:

хорошо … я понял это — второй случай работает — просто нужно поместить сразу после RewriteEngine на:

 RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$

RewriteRule ^page.html$ http://subdomain.domain.com/page.html [R=301,L]
  

и это может быть использовано для нескольких правил при одном условии:

 RewriteCond %{HTTP_HOST} !^(www.)?domain.com$ [NC]
RewriteRule .* - [S=2]

RewriteRule ^page.html$ http://subdomain.domain.com/page.html [R=301,L]
RewriteRule ^page-2.html$ http://subdomain.domain.com/page-2.html [R=301,L]