sokol
Zavolga.Net
Редуцирование полного URL при преобразованиях с помошью mod_rewrite
Есть такое преобразование:
RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.ru$
RewriteRule ^(.+) %{HTTP_HOST}/$1 [C]
RewriteRule ^([^.]+)\.domain\.ru(.*) http://domain.ru/content/$1$2 [QSA,L]
Судя по логам данное преобразование вызывает рекурсию, из за того, что в последнем правиле, перед внутренним редиректом делается reduce полного URL
К примеру:
Для обращения http://news.domain.ru
из логов
reduce http://domain.ru/content/news/index.php -> /content/news/index.php
Затем делается внутренний редирект, но так как текущий HTTP_HOST news.domain.ru, редуцированный запрос опять идет к этому хосту... что собственно и вызвает рекурсию.
Как запретить усечение полного URL при внутреннем редиректе??? Возможно ли вобще такое?
Вариант с внешним редиректом, отрабатывает нормально
RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.ru$
RewriteRule ^(.+) %{HTTP_HOST}/$1 [C]
RewriteRule ^([^.]+)\.domain\.ru(.*) http://domain.ru/content/$1$2 [QSA,R,L]
Есть такое преобразование:
RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.ru$
RewriteRule ^(.+) %{HTTP_HOST}/$1 [C]
RewriteRule ^([^.]+)\.domain\.ru(.*) http://domain.ru/content/$1$2 [QSA,L]
Судя по логам данное преобразование вызывает рекурсию, из за того, что в последнем правиле, перед внутренним редиректом делается reduce полного URL
К примеру:
Для обращения http://news.domain.ru
из логов
reduce http://domain.ru/content/news/index.php -> /content/news/index.php
Затем делается внутренний редирект, но так как текущий HTTP_HOST news.domain.ru, редуцированный запрос опять идет к этому хосту... что собственно и вызвает рекурсию.
Как запретить усечение полного URL при внутреннем редиректе??? Возможно ли вобще такое?
Вариант с внешним редиректом, отрабатывает нормально
RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.ru$
RewriteRule ^(.+) %{HTTP_HOST}/$1 [C]
RewriteRule ^([^.]+)\.domain\.ru(.*) http://domain.ru/content/$1$2 [QSA,R,L]