У меня проблемы с LiteSpeed, который не оценивает правила mod_rewrite так же, как apache2
У меня есть система маршрутизации php с настройкой mod_rewrite, которая переписывает http://example.com/page-name в http://example.com/index.php/page-name с помощью $ _SERVER ['REQUEST_URI']. Это отлично работает.
Я добавил URI для создания миниатюр из URI изображения с именем ex http://example.com/generate-thumbnail?uri=/images/thumbnails/1.jpg.. Этот URL создает миниатюру изображения, которая сохраняется в http://example.com/images/thumbnail/1.jpg для включения кэширования.
Следующим шагом является регулярное выражение, которое проверяет, выполняется ли изображение на http://example.com/images/thumbnail/1.jpg и, если нет, запускается http://example.com/generate-thumbnail?uri=/images/thumbnails/1.jpg для создания нового эскиза.
Файл .htaccess, приведенный ниже, прекрасно работает в apache2, но не работает на моем хостинге, который запускает LiteSpeed. На LiteSpeed оцениваются только первые правила перезаписи, так что если http://example.com/generate-thumbnail?uri=/images/thumbnails/1.jpg не существует, сервер, похоже, ищет файл http://example.com/generate-thumbnail вместо оценки последних правил перезаписи, которые приведут к правильному URL http://example.com/index.php/generate-thumbnail?uri=/images/thumbnails/1.jpg.
apache2 понял это правильно, но не LiteSpeed, почему?
Если я изменю RewriteRule (.*) /generate-thumbnail?uri=$1 [L]
на RewriteRule (.*) /file_that_exists.php?uri=$1 [L]
, где file_that_exists.php - настоящий файл, в LiteSpeed все работает нормально.
Как мне получить LiteSpeed для оценки всех правил перезаписи?
# Start the rewrite engine
RewriteEngine On
# Rewrite if post image was requested but is not cached, generate it
RewriteCond %{REQUEST_URI} ^/images/thumbnails/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /generate-thumbnail?uri=$1 [L]
# Rewrite the page into the router
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]