Задать вопрос
@bossigorxxx

Как исключить категории с редиректа на новый домен?

всем привет есть такое правило:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteCond %{HTTP_HOST} site.net
RewriteRule (.*) https://site-net.turbopages.org/site.net/s/$1 [R=302,L]


Это редирект с домена на домен на мобильных для турбо страниц.

Как исключить редирект категории lechenie-diarei/page/2 и саму категорию lechenie-diarei из редиректа

Пробовал так но не помогает

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteCond %{HTTP_HOST} site.net
RewriteCond %{REQUEST_URI} !^/lechenie-diarei/page/.*$
RewriteRule (.*) https://site-net.turbopages.org/site.net/s/$1 [R=302,L]
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dodo512
Как на самом деле работает mod_rewrite.
mod_rewrite запускает обработку запроса снова и снова, до тех пор, пока он не перестанет меняться.
Флаг [L] останавливает текущую итерацию обработки запроса. Однако если запрос был изменен теми RewriteRule, которые все-таки успели отработать, Apache запустит цикл обработки запроса заново с первого RewriteRule.

RewriteCond %{REQUEST_URI} !^/lechenie-diarei
Это условие нормально работает только на первой итерации обработки запроса.
Но когда сработает правило для ЧПУ вордпреса RewriteRule . /index.php [L] содержимое %{REQUEST_URI} поменяется на /index.php и Apache запустит цикл обработки запроса заново с первого RewriteRule.

Вместо %{REQUEST_URI} можно проверять %{THE_REQUEST}.
Там всегда первоначальный запрос целиком GET /path HTTP/1.1

RewriteCond %{THE_REQUEST} !^\S+\s/lechenie-diarei
или так
RewriteCond %{THE_REQUEST} "! /lechenie-diarei"

Ещё можно использовать переменную %{ENV:REDIRECT_STATUS}.
Там сохраняется код с которым завершилось предыдущее перенаправление.
На первой итерации в этой переменной пусто.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !^/lechenie-diarei
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
А если без слеша спереди ?
Да и не заюывай что у тебя в браузере кеш редиректов, его тоже нужно скинуть а желательно проверь в другом браузере или через сервисы.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteCond %{HTTP_HOST} site.net
RewriteCond %{REQUEST_URI} !^lechenie-diarei/page/.*$
RewriteRule (.*) https://site-net.turbopages.org/site.net/s/$1 [R=302,L]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы