Yii каркас работает с путями формы http://foo.bar/index.php/foo/bar/baz
.Как работает конкретный переписывающий файл?
Существует article, который рассказывает, как скрыть index.php
с помощью mod_rewrite
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
The probles в том, что я не понимаю, как это переписывание работает при перезаписи http://foo.bar/foo/bar/baz
переписывания двигатель получает
foo/bar/baz
.
матчиfoo/bar/baz
Поскольку
2
верно два условия проверяются также, и они соответствуютfoo/bar/baz
заменяетсяindex.php
Следующая итерация переписывания не изменяет путь, так как файл фактически существует, и первое условие не соответствует
Внутренняя переадресация на
index.php
выполняется
Что я не могу получить, то почему я вижу страницу http://foo.bar/index.php/foo/bar/baz
, когда перенаправление производится на http://foo.bar/index.php
?
немного уточнил код ... это действительно просто для того, чтобы дать вам представление о том, как это можно сделать! конечно, вы будете беспокоиться о неправильном количестве деталей и т. д., но это не является предметом этого ответа. Надеюсь, поможет :)! – PLM57
Создает ли Apache новый HTTP-запрос на «http: // foo.bar/index.php» при внутреннем перенаправлении? Если да, то как 'index.php' знает исходный путь' foo/bar/baz'? – Kolyunya
Меня интересует, что на самом деле происходит * до того, как выполняется скрипт php. Является ли Apache новым HTTP-запросом внутренним или он хранит все HTTP-заголовки из исходного запроса и передает их в новый файл? – Kolyunya