Зачем мне оба набора правил? - PullRequest
0 голосов
/ 26 декабря 2011

Возьмите mod_rewrite для сервера Apache. Я не совсем понимаю, зачем мне оба RewriteRules в этом примере:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>

Первоначально найденный в этом DIY MVC уроке, кажется, что ^$ и (.*) означают одно и то же И зачем мне два [L] аст флагов, так как второй не должен стрелять, верно? Я пытаюсь глубже понять всю внутреннюю механику, а не просто копировать рабочее решение.

1 Ответ

1 голос
/ 26 декабря 2011

Нет, ^$ и .* не означают одно и то же: первое соответствует только пустому входу, второе соответствует чему угодно - , включая пустой ввод Второе правило должно быть достаточно.

Относительно того, почему здесь [L], рассмотрим пустой запрос, а не [L]:

  • первое правило превратит запрос в public/;
  • затем сработает второй и превратит public/ в public/public/.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...