Не срабатывает htaccess

12
L8
На сайте с 10.12.2014
Offline
7
877

В htaccess настроено ЧПУ \

RewriteRule ^hot\.html$ index.php?action=hot [NC,L]

Далее пытаемся осуществить 301 на новый урл

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{QUERY_STRING} ^action=hot$
RewriteRule ^$ http://sait.ru/hot.html [L,R=301]

но не работает. вернее срабатывает, но как-то через раз... почему?

A
На сайте с 19.07.2010
Offline
130
#1
limo82ru:
В htaccess настроено ЧПУ \

RewriteRule ^hot\.html$ index.php?action=hot [NC,L]

Далее пытаемся осуществить 301 на новый урл

Нет никакого "далее", т.к. Вы в первом правиле указали буковку [L] - Last, т.е. последующие строки в htaccess обрабатываться не будут

.............
L8
На сайте с 10.12.2014
Offline
7
#2

Хорошо, убираем в первой команде этот ласт... далее даем такую команду :

RewriteEngine On
RewriteCond %{QUERY_STRING} ^action=hot$ [NC]
RewriteRule ^index\.php$ http://sait.ru/hot.html? [R=301,L]

В итоге

Неверное перенаправление на странице
Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
siv1987
На сайте с 02.04.2009
Offline
427
#3

Вы не сбросили параметры запроса http://sait.ru/hot.html?

L8
На сайте с 10.12.2014
Offline
7
#4
siv1987:
Вы не сбросили параметры запроса http://sait.ru/hot.html?

Убираю ? - в итоге еще одна ошибка вскрывается : редиректит http://sait.ru/hot.html?action=hot с тем же Firefox определил, что сервер перенаправляет запрос...

siv1987
На сайте с 02.04.2009
Offline
427
#5
limo82ru:
Убираю ?

Сравните свой пример и тот, который я написал. У вас его нету, в моем случае присутствует. Логика понятна?

L8
На сайте с 10.12.2014
Offline
7
#6
siv1987:
Сравните свой пример и тот, который я написал. У вас его нету, в моем случае присутствует. Логика понятна?

не совсем... как сбросить то?

какой пример у вас, не вижу?

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


RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\ /index.php\?action=hot\ HTTP
RewriteRule ^ http://sait.ru/hot.html? [L,R=301]


RewriteRule ^hot\.html$ index.php?action=hot [L]

или так


RewriteEngine on

RewriteCond %{ENV:REDIRECT_FINISH} =1
RewriteRule ^ - [L]

RewriteCond %{QUERY_STRING} ^action=hot$
RewriteRule ^index\.php$ http://sait.ru/hot.html? [L,R=301]

RewriteRule ^hot\.html$ index.php?action=hot [L,E=FINISH:1]
siv1987
На сайте с 02.04.2009
Offline
427
#8
limo82ru:
какой пример у вас, не вижу?

Там же специально выделено жирным символ который у вас отсутствует. Неужели не видно и не понятно что его нужно добавить? И при условие, что вы делаете редирект с /?action=hot, в противном случае надо ставить анти-зацикливание как показали выше.

L8
На сайте с 10.12.2014
Offline
7
#9

Пока ждал ваш ответ ковырялся.

В итоге стало вот так :

RewriteCond %{QUERY_STRING} ^action=hot$ [NC]
RewriteRule ^$ http://sait.ru/hot.html [R=301,L]
siv1987
На сайте с 02.04.2009
Offline
427
#10
limo82ru:
В итоге стало вот так :

В итоге у вас ничего не изменилось кроме флага NC, который тут нафиг не нужен, если вы не собираетесь делать регистро-независимое сравнение строк. Правильные решения указаны выше.

12

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