LiteSpeed が mod_rewrite ルールを apache2 と同じように評価しないという問題があります
http://example.com/page-nameを $_SERVER['REQUEST_URI'] でhttp://example.com/index.php/page-nameに書き換える mod_rewrite 設定の php ルーティング システムがあります。これはうまくいきます。
ex http://example.com/generate-thumbnail?uri=/images/thumbnails/1.jpgという画像 URI からサムネイルを生成する URI を追加しました。この 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を探すように見えます。正しい URL http://example.com/index.php/generate-thumbnail?uri=/images/thumbnails/1.jpgになる最後の書き換えルールを評価する代わりに、 .com/generate-thumbnailを使用します。
apache2はこれを正しく取得しますが、LiteSpeedでは取得しません。なぜですか?
file_that_exists.php が実際のファイルである場所に変更するRewriteRule (.*) /generate-thumbnail?uri=$1 [L]
と、LiteSpeed ですべて正常に動作します。RewriteRule (.*) /file_that_exists.php?uri=$1 [L]
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]