Что делаю не так с 301 редиректом и .htaccess?

buldozer_kpi
На сайте с 26.03.2009
Offline
128
549

Доброго времени суток!

Есть сайт на Drupal 6, в корне лежит стандартный файл .htaccess в котором для редиректа прописаны следующие строки:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.site.info

RewriteRule (.*) http://site.info/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

RewriteRule ^index\.php$ http://site.info/ [R=301,L]

Всё, вроде, работает.

На сайте есть страницы site.info/razdel, site.info/razdel/doc1, site.info/razdel/doc2 ... site.info/razdel/docN. Стоит задача со всех страниц razdel/docN сделать 301 редирект на razdel. Для этого к выше написанным выражениям добавляю следующее:

RewriteRule ^razdel(.*)$ /razdel [L,R=301]

Такая запись почему-то не работает. Что я делаю не так?

Заранее спасибо за ответ!

J
На сайте с 20.02.2014
Offline
120
jkm
#1

Вероятно, добавляете в самый конец уже после правил для чпу, которые все заворачивают на index.php.

Перенесите правило на самый верх, сразу после RewriteEngine On.

buldozer_kpi
На сайте с 26.03.2009
Offline
128
#2

Не помогло. Есть ещё варианты?

J
На сайте с 20.02.2014
Offline
120
jkm
#3

Тогда так


RewriteRule ^razdel(.+)$ http://%{HTTP_HOST}/razdel [L,R=301]
buldozer_kpi
На сайте с 26.03.2009
Offline
128
#4
jkm:
Тогда так

RewriteRule ^razdel(.+)$ http://%{HTTP_HOST}/razdel [L,R=301]

Не помогло. Ставлю и в начало, и в конец - результата нет. А больше ничего прописывать не нужно? Например RewriteCond какой-то? Я просто здесь не силён.

J
На сайте с 20.02.2014
Offline
120
jkm
#5

А кеш браузера чистили?

Дополнительный RewriteCond здесь не требуется.

buldozer_kpi
На сайте с 26.03.2009
Offline
128
#6

Кеш почистил, ничего не изменилось, открывал в разных браузерах. Если делать редирект с помощью модуля Друпал вручную - работает. Но это нужно каждую страницу отдельно редиректить, а их у меня около 2000.((

J
На сайте с 20.02.2014
Offline
120
jkm
#7

Сразу под RewriteEngine On такую конструкцию


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /razdel(.+)\ HTTP/
RewriteRule ^ http://%{HTTP_HOST}/razdel [L,R=301]
buldozer_kpi
На сайте с 26.03.2009
Offline
128
#8
jkm:
Сразу под RewriteEngine On такую конструкцию

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /razdel(.+)\ HTTP/
RewriteRule ^ http://%{HTTP_HOST}/razdel [L,R=301]

Реакция есть. Теперь осталось понять где здесь ошибка. После добавления этих строчек при заходе на страницу она становится недоступной, а адрес в адресной строке получается следующего вида:

http://site.info/razdel?q=razdel&q=razdel&q=razdel&...

J
На сайте с 20.02.2014
Offline
120
jkm
#9

Добавить знак вопроса для очистки GET параметров при редиректе.


RewriteRule ^ http://%{HTTP_HOST}/razdel? [L,R=301]
buldozer_kpi
На сайте с 26.03.2009
Offline
128
#10

100500 плюсов вам в карму, мил человек. Спасибо огромное!

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