Следующая директива в моем файле vhost
отлично работает, если нет файла .htaccess
.Но когда я представляю один, он перестает работать.Как заставить перезаписи vhost
выполняться, когда перезапись htaccess
равна not-matched
?
С vhost.conf
:
# Skip everything except html and json
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.(html|json)$
RewriteRule .* - [L]
# If html exists (is cached)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
# Otherwise pass it on the index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
С /test/.htaccess
:
RewriteEngine on
RewriteCond %{REQUEST_URI} old_directory/.*$
RewriteRule (.*)$ old_missing.phtml [PT]
Запросы на /test/hello.json
...... без .htaccess
: направляется на index.php
и возвращает правильный JSON.... с .htaccess
: возвращает 404 Not Found
Запросы на /text/old_hello.phtml
...... без .htaccess
: возвращает 404 Not Found
... с .htaccess
: возвращает содержимое old_missing.phtml
Кроме того, я замкнул свой журнал перезаписи и похоже, что он делает то, что должен с правилами .htaccess
(trip per-dir prefix
, applying pattern
, RewriteCond => not-matched
и pass through
), но затем он просто останавливается.
Для тех, кто склонен спрашивать: «Зачем ты это делаешь?»Есть две причины: 1) мне платят, и 2) мы переносим некоторые запросы ajax .phtml
в новую систему ajax .json
, поэтому нам нужно вернуть сообщение, если пользователь запрашивает файлы из old_directory
сначала сообщить им об изменениях.Спасибо.