Я видел многочисленные примеры RewriteRule в следующем формате:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Смысл в том, что URI, которые не поддерживаются реальным файлом, будут обрабатыватьсяCMS, подключенный через /index.php.Например, WordPress использует эту технику в своем стандартном (? ) .htaccess файле .
Однако регулярное выражение не имеет никакого смысла.Не вдаваясь в дискуссию о том, с какой строкой-предметом сопоставляется (а смотрите «Что сопоставляется?» В официальных документах Apache RewriteRule), регулярное выражение .
должно соответствовать только самому первому символу !Однако он ведет себя идентично .*
, то есть соответствует всей строке темы.Устанавливая RewriteLogLevel 5
, я получаю те же результаты и записи журнала для .
и .*
.
. Я могу только заключить, что RewriteRule с шаблоном .
имеет специальный случай и соответствует всей строке.(а-ля .*
), а не обрабатывается с помощью механизма RegExp как есть.Однако я нигде не видел этого документально.Документация недостаточна, или я просто что-то упустил?
Спасибо!