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

Не работает RewriteRule?

Доброй ночи.

В корне сайта лежит .htaccess следующего содержания:
spoiler
AddDefaultCharset UTF-8
RewriteEngine on
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Options -Indexes

Раньше с корне сайта была директория storage с медиафайлами. Теперь она вынесена на отдельный поддомен. И надо настроить 301 редирект со старых адресов на новый. Т.е. запрос вида http://site.com/storage/images/1.png должен редиректить на storage.site.com/images/1.png

Регулярку я составил:
RewriteRule ^storage/(.+)$ http://storage.site.com/$1 [R=301,L]
Но не получается добавить ее так, что бы не сломать что-нибудь другое.

Если вписать ее после RewriteRule . index.php, то она не работает. Запрос передается в index.php (оно и понятно).
Если вписать перед существующим правилом - то редирект начинает работать, но перестают подключаться доп. файлы на текущем домене (js, css, изображения).

Подскажите, как правильно поменять htaccess, что бы редирект работал корректно?
  • Вопрос задан
  • 2903 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
MegaMufa
@MegaMufa Автор вопроса
Тыкался, тыкался - разобрался.
Надо было добавить условие для этого правила, что бы оно не всегда выполнялось.
AddDefaultCharset UTF-8
RewriteEngine on
#RewriteBase /

RewriteCond %{REQUEST_URI} ^/storage/(.+)$
RewriteRule ^storage/(.+)$ http://storage.site.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Options -Indexes
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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