Правила Fallthrough чреваты ошибками.Моя общая рекомендация заключается в том, что любое правило со строкой замены, отличной от -
, должно вызывать внутреннее перенаправление для перезапуска анализа .htaccess
.Это позволяет избежать ошибок подзапроса и URI_PATH.
Далее, когда вы перейдете на 404, опять же, по моему опыту, это невозможно исправить.У меня есть фрагмент, который делает нечто похожее на то, что вы пытаетесь сделать:
# For HTML cacheable blog URIs (a GET to a specific list, with no query params,
# guest user and the HTML cache file exists) then use it instead of executing PHP
RewriteCond %{HTTP_COOKIE} !blog_user
RewriteCond %{REQUEST_METHOD}%{QUERY_STRING} =GET [NC]
RewriteCond %{ENV:DOCUMENT_ROOT_REAL}/blog/html_cache/$1.html -f
RewriteRule ^(article-\d+|index|sitemap.xml|search-\w+|rss-[0-9a-z]*)$ \
blog/html_cache/$1.html [L,E=END:1]
Обратите внимание, что я делаю условный тест в пространстве файловой системы, а не в пространстве URI (Местоположение).Так что в вашем случае это отобразится на
RewriteCond %{DOCUMENT_ROOT}/themes/current/images/$1/$2l -f
RewriteRule ^images/(.+?)/(.+)$ themes/current/images/$1/$2 [L]
Хотя выполните phpinfo (), чтобы проверить, использует ли ваш хостинг-провайдер альтернативу DOCUMENT_ROOT , если это предложение общего хостинга, напримеральтернативная переменная окружения, как моя, использует DOCUMENT_ROOT_REAL .
Второе правило будет обнаружено при второй обработке, прошедшей после внутреннего перенаправления.