правильно ли настроен редирект?

12
Ушат
На сайте с 19.09.2012
Offline
95
794

правильно ли настроен редирект?

Собственно:

RewriteCond %{HTTP_HOST} ^Сайт.com

RewriteRule (.*) http://www.сайт.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} \ /index\.php\ HTTP/

RewriteRule ^index\.php$ http://www.сайт.com/ [R=301,L]

Redirect 301 /home http://www.сайт.com/

RewriteCond %{THE_REQUEST} \ /home\.html\ HTTP/

RewriteRule ^home\.html$ http://www.сайт.com/ [R=301,L]

Redirect 301 /home http://www.сайт.com/

RedirectPermanent /home.html /

Цель переадресация с /home.html и /index.php на www.сайт.com

С уважением Ушат

НЕ нажимать (). не ходите сюда (http://orteil.dashnet.org/cookieclicker/) ибо проклятие требует чью-либо душу в замен моей
dma84
На сайте с 21.04.2009
Offline
168
#1

Можно и так

RewriteCond ^%{THE_REQUEST}$ (index|home)\.html

RewriteRule ^(.*)(index|home)\.html $1 [R=301,L]
Ушат
На сайте с 19.09.2012
Offline
95
#2
dma84:
Можно и так

RewriteCond ^%{THE_REQUEST}$ (index|home)\.html

RewriteRule ^(.*)(index|home)\.html $1 [R=301,L]

Прокомментируйте пожалуйста текущий вариант. Правильно ли реализована поставленная задача?

izbushka
На сайте с 08.06.2007
Offline
110
#3

Если

Ушат:
Цель переадресация с /home.html и /index.php на www.сайт.com

То все совсем просто (одна строка):

RewriteRule ^(index|home)\.html http://www.сайт.com [R=301,L]

При условии что текущий домен проверять не надо

Ушат
На сайте с 19.09.2012
Offline
95
#4
izbushka:
Если

То все совсем просто (одна строка):
RewriteRule ^(index|home)\.html http://www.сайт.com [R=301,L]

При условии что текущий домен проверять не надо

Как будет выглядеть приведенный вами пример если к нему добавить еще пере адресацию с сайта без www на сайт c www? Тоесть нужно:

1. переадресация с index.php на www.сайт.com

2. переадресация с home.html на www.сайт.com

3. переадресация с сайт.com на www.сайт.com

izbushka
На сайте с 08.06.2007
Offline
110
#5
Ушат:
Как будет выглядеть приведенный вами пример если к нему добавить еще пере адресацию с сайта без www на сайт c www?

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) http://www.сайт.com/$1 [R=301,L]
RewriteRule ^(index|home)\.html http://www.сайт.com [R=301,L]
Ушат
На сайте с 19.09.2012
Offline
95
#6
izbushka:
RewriteCond %{HTTP_HOST} !^www\. [NC]

RewriteRule (.*) http://www.сайт.com/$1 [R=301,L]
RewriteRule ^(index|home)\.html http://www.сайт.com [R=301,L]

Если вас не затруднит прокомментируйте данный код.

dma84
На сайте с 21.04.2009
Offline
168
#7
Ушат:
Если вас не затруднит прокомментируйте данный код.

RewriteCond %{HTTP_HOST} !^www\. [NC]

RewriteRule (.*) http://www.сайт.com/$1 [R=301,L]

Если имя хоста начинается не с www, то идёт редирект на сайт с www

RewriteRule ^(index|home)\.html http://www.сайт.com [R=301,L]

Если URI (не путать с URL) начинается с index.html или с home.html, то идёт перенаправление на главную страницу.

хотя можно опустить имя домена и перенаправлять в корень сайта

RewriteRule ^(index|home)\.html / [R=301,L]

А ещё лучше, что бы правило действовало и для директорий

RewriteRule ^(.*)(index|home)\.html /$1 [R=301,L]
izbushka
На сайте с 08.06.2007
Offline
110
#8
dma84:
А ещё лучше, что бы правило действовало и для директорий

что противоречит условию задачи, раз, и два - переадресует и bla-index.html тоже

Ушат:
Цель переадресация с /home.html и /index.php

Ну и да, недосмотрел, раз надо home.html и index.php то можно сделать либо так:

RewriteRule ^(index|home)\.(html|php) http://www.сайт.com [R=301,L]

либо так:

RewriteRule ^index\.php http://www.сайт.com [R=301,L]

RewriteRule ^home\.html http://www.сайт.com [R=301,L]

А вчем разница, предлагаю ТС поразмыслить самому :)

Ушат
На сайте с 19.09.2012
Offline
95
#9
izbushka:
что противоречит условию задачи, раз, и два - переадресует и bla-index.html тоже

Ну и да, недосмотрел, раз надо home.html и index.php то можно сделать либо так:
RewriteRule ^(index|home)\.(html|php) http://www.сайт.com [R=301,L]

либо так:
RewriteRule ^index\.php http://www.сайт.com [R=301,L]

RewriteRule ^home\.html http://www.сайт.com [R=301,L]


А вчем разница, предлагаю ТС поразмыслить самому :)

Разница в количестве строк;)?

dma84
На сайте с 21.04.2009
Offline
168
#10
izbushka:
что противоречит условию задачи, раз, и два - переадресует и bla-index.html тоже

Для таких случаев делаем так

RewriteCond ^%{THE_REQUEST}$ /(index|home)\.(html|php)

RewriteRule ^(.*)(index|home)\.(html|php) /$1 [R=301,L]


---------- Добавлено 11.12.2012 в 13:21 ----------

izbushka:

RewriteRule ^index\.php http://www.сайт.com [R=301,L]

RewriteRule ^home\.html http://www.сайт.com [R=301,L]

Я не понимаю одного, зачем писать имя домена, если можно ограничиться слэшем?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий