301 редирект и mod_rewrite

12
gormarket
На сайте с 29.12.2010
Offline
47
#11
bahus:
Да и даже если жестко прописывать урл в RewriteRule и ставить флаг R=301 - не помогает

Потому не помогает, что У Вас потом все перехватывает вот этот реврайт

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?page=$1 [QSA]

Добавьте в него еще одну строку-условие, чтобы стало так

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?page=$1 [QSA]

(надеюсь у Вас нет реврайтов в htaccess, выполняющихся в несколько проходов по htaccess)

А потом перед этим реврайтом,но ниже строк

RewriteEngine on

RewriteBase /

пишите Ваши редиректы с жестко прописанными урл:

RewriteRule ^cat/avtobetononasos/13-avtobetononasos-zoomlion-zlj53945thb125-44\.html$ http://%{HTTP_HOST}/katalog/avtobetononasosy/avtobetononasos-zoomlion-zlj5394-5thb125-44 [R=301,L]

#куча подобных строк

А можете наверно и как до того писали

Redirect 301 /cat/...

#куча подобных строк

и добавить эту кучу в начало файла

добавленная строка

RewriteCond %{ENV:REDIRECT_STATUS} ^$

заблокирует реврайт на "index.php?page=..." наверно и для такого варианта

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
siv1987
На сайте с 02.04.2009
Offline
427
#12

На простом Redirect 301 такой редирект не получится. Здесь нужно делать только с мод реврайтом.

Если они у вас настолько отличаются и не совпадают по шаблону тогда для каждого

RewriteRule ^cat/avtobetononasos/13-avtobetononasos-zoomlion-zlj53945thb125-44\.html$ /katalog/avtobetononasosy/avtobetononasos-zoomlion-zlj5394-5thb125-44 [L,R=301]

Добавить тоже после RewriteBase

и удалить все Redirect 301 ..

bahus
На сайте с 13.01.2008
Offline
51
#13
gormarket:
Потому не помогает, что У Вас потом все перехватывает вот этот реврайт

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

Добавьте в него еще одну строку-условие, чтобы стало так

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

(надеюсь у Вас нет реврайтов в htaccess, выполняющихся в несколько проходов по htaccess)

А потом перед этим реврайтом,но ниже строк
RewriteEngine on
RewriteBase /
пишите Ваши редиректы с жестко прописанными урл:

RewriteRule ^cat/avtobetononasos/13-avtobetononasos-zoomlion-zlj53945thb125-44\.html$ http://%{HTTP_HOST}/katalog/avtobetononasosy/avtobetononasos-zoomlion-zlj5394-5thb125-44 [R=301,L]
#куча подобных строк

Прописал так


RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cat/avtobetononasos/13-avtobetononasos-zoomlion-zlj53945thb125-44\.html$ http://%{HTTP_HOST}/katalog/avtobetononasosy/avtobetononasos-zoomlion-zlj5394-5thb125-44 [R=301]

RewriteRule ^(.+)$ index.php?page=$1 [L]

Правильно? Отвалился css, стандартный ЧПУ тоже, выдает 404. Однако редиректит правильно, хоть и на 404

---------- Добавлено в 16:48 ---------- Предыдущее сообщение было в 16:42 ----------

Во, siv1987 правльно посоветовал, сработало!

Спасибо :)

SeoPunk.Ru (http://seopunk.ru) - ХоумПага PivanoFF.Ru (http://pivanoff.ru) - ХоумПага намба ту FixBlog.Ru (http://fixblog.ru) - Полезности веб-мастерам
gormarket
На сайте с 29.12.2010
Offline
47
#14

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

RewriteEngine on

RewriteBase /

RewriteRule ^cat/avtobetononasos/13-avtobetononasos-zoomlion-zlj53945thb125-44\.html$ http://%{HTTP_HOST}/katalog/avtobetononasosy/avtobetononasos-zoomlion-zlj5394-5thb125-44 [R=301]

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?page=$1 [L]

три строки RewriteCond и одна строка RewriteRule это одно целое, их нельзя разрывать другими правилами

siv1987
На сайте с 02.04.2009
Offline
427
#15
bahus:
Прописал так

А как было написана прописать?

Вот вам полностью рабочий вариант


RewriteEngine on
RewriteBase /

RewriteRule ^cat/avtobetononasos/13-avtobetononasos-zoomlion-zlj53945thb125-44\.html$ /katalog/avtobetononasosy/avtobetononasos-zoomlion-zlj5394-5thb125-44 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [L]
12

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