Как сделать редирект без редиректа htaccess в корне, чтобы сработал контроллер в приложении frontend?

Правило
[
    'pattern' => 'image/get/<filepath:.+>',
    'route' => 'image/get,
],


htaccess в корне
Options +FollowSymlinks
    # Включаем mod_rewrite
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^/upload [NC]
    RewriteCond %{REQUEST_URI} \.(jpg|png|gif)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^upload\/?(.+) /image/get/$1 [NC,L]

    # Если запрос начинается с /admin, то заменяем на /backend/web/
    RewriteCond %{REQUEST_URI} ^/admin [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^admin\/?(.*) /backend/web/$1 [NC,L]

    # Добавляем другой запрос /frontend/web/$1
    RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web) [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) /frontend/web/$1
htaccess в папке frontend/web
# Mod_Autoindex
<IfModule mod_autoindex.c>
  # Запрещаем просмотр содержимого папок
  Options -Indexes
</IfModule>

# Mod_Rewrite
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  # Включаем mod_rewrite
  RewriteEngine On

  # Если это папка или файл, открываем её/его
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  # В противном случае перенаправляем на index.php
  RewriteRule . index.php
</IfModule>


Обращаюсь
1) по адресу /upload/file.jpg , получаю 404
2) по адресу /image/get/file.jpg , получаю результат работы контроллера.
3) добавляю в первый редирект R=301 , получаю результат работы контроллера, но с редиректом, а надо без.

Причем ["REDIRECT_URL"] и в 1, и в 2 - одинаковые
"/frontend/web/image/get/file.jpg"
"/frontend/web/image/get/file.jpg"

Когда упираешься в стену на ровном месте, понимаешь, что чё-то не понимаешь и это просто бесит (
  • Вопрос задан
  • 213 просмотров
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы не с той стороны заходите. Надо что бы /upload/file.jpg вел в image/get. Там брать файл средствами php и отдавать. Без ридиректов, зачем они нужны Вам?
Ответ написан
a_u_sinitsin
@a_u_sinitsin Автор вопроса
Напишу как заработало.

htaccess переписал так
RewriteCond %{REQUEST_URI} ^/upload [NC]
    RewriteCond %{REQUEST_URI} \.(jpg|png|gif)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.+) /frontend/web/$1 [NC,L]


Т.е. если запрос из upload и файла нет, то редиректит дальше на yii , а если уже есть, то пропускает.

А редирект на контроллер сделал в маршрутах
[
    'pattern' => 'upload/<filepath:.+>',
    'route' => 'image/get',
],
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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