yurygolikov
@yurygolikov

Apache — mod_rewrite. Не работает правильно регулярка. В чем проблема? Как правильно написать?

Привет. Мало работал с apache - mod_rewrite. Но сейчас пришлось.
Не работает правильно регулярка. При любых запросах, в том числе /api/blabla/blabla - выдает index.html, а должно index.php.

Проверил тут - все правильно работает. А у меня - нет. Такое ощущение что не работает именно флаг [L]. Мб их нужно как то включать?

RewriteEngine on
RewriteRule ^api($|/+.*$) index.php [L]
RewriteRule ^.*$ index.html


(упрощенный вариант того места, которое не работает)

Что мне нужно:
1. Если запрос начинается с /api{далее что угодно}, то преобразуем запрос в index.php
2. Во всех остальных случаях отдаем index.html.

Прошу помочь. Спасибо большое!
  • Вопрос задан
  • 214 просмотров
Решения вопроса 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
@VisualIdeas
RewriteRule ^api(.+)$ /index.php [L]
Слеш перед индекс
Ответ написан
Ваш ответ на вопрос

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

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