dyonis
@dyonis
Web разработчик

RewriteRule — Как правильно реализовать внутренний редирект?

Необходимо модифицировать url перед обработкой его роутером:

Например, запрашивается url:
/img/100x100/images/ddde721137e7ea40a5754b70037425bc.jpg

нужно преобразовать его в
/img?w=100&h=100&src=images/ddde721137e7ea40a5754b70037425bc.jpg

Если ставлю [L,R=302], то все работает, а если только [L] в роутер отправляется исходный url, что непонятно.
По идее ведь он должен преобразоваться и дальше правила не должны срабатывать.

Важно, чтобы правило с исключением из обработки статических картинок тоже работало.

Вот полный код .htaccess:
RewriteEngine on
RewriteBase /

#/img/40x40/images/article/631384704403-5354074831.jpeg
RewriteRule ^img/(\d+)x(\d+)/(.+)/?$ img?w=$1&h=$2&src=$3 [L,R=302]

#Excluding images
RewriteRule .*\.(jpg|gif|png|svg|css|js|kml|fb2|ico|html|xml|txt)$ - [L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ [NC,L]
RewriteRule ^.*$ index.php [NC,L]
  • Вопрос задан
  • 2499 просмотров
Пригласить эксперта
Ответы на вопрос 1
У меня по вашим правилам преобразование выполняется успешно и с [L,R=302] и с [L].
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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