yurygolikov
@yurygolikov

Apache – mod_rewrite. Написать простую регулярку. Почему не работает?

OC ubuntu16.04-x86_64
Apache2.4
Нужно написать регулярку на apache – mod_rewrite.
1. Если запрос начинается с /api{далее что угодно}, то преобразуем запрос в index.php
2. Во всех остальных случаях отдаем index.html.

Мой вариант (ниже) почему-то не работает.

RewriteEngine on  
RewriteRule ^api.*$ index.php [L]  
RewriteRule ^.*$ index.html


Спасибо.
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
yurygolikov
@yurygolikov Автор вопроса
Решение оказалось вот таким.

RewriteEngine On
RewriteCond %{ENV:REDIRECT_FINISH} !^$
RewriteRule ^ - [L]
RewriteRule ^api($|/+.*$) index.php [E=FINISH:1,L]
RewriteRule ^.*$ index.html [E=FINISH:1,L]


Дело было в том, что mod_rewrite может войти в бесконечный цикл.
Подробнее об этом:
https://habrahabr.ru/post/75885/
https://habrahabr.ru/company/sprinthost/blog/129560/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
T_y_l_e_r
@T_y_l_e_r
RewriteEngine On
RewriteBase /
RewriteRule ^api.*$ index.php [L]  
RewriteRule ^.*$ index.html
Ответ написан
Ваш ответ на вопрос

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

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