0

私は機能するのに十分単純なルールを取得しようとしています:

Input URL: http://example.com/css/styles.css/t=123456
Expected output: http://example.com/css/styles.css

t=123456ファイルの変更時刻を表し、サーバー側で自動的に追加されます。現在、それはクエリ文字列ですが、状況によっては適切にキャッシュされていないようです。そのため、代わりに URL でエンコードしたいと考えています。

私が試したルールは非常に単純です。

RewriteRule (.*)/t=[0-9]+ $1

しかし、何らかの理由で、404 Not Found エラーが発生し続けました。

[R=301]書き換えがどこに行くのかを確認するために追加したところ、何らかの理由でこれが出力 URL であることがわかりました。

http://example.com/home/evilzoro/public_html/css/styles.css

そのため、パラメータを正しく削除している間に、ファイルシステムのパス全体を追加していました!

奇妙なことに、次のような他の同様のルールは問題なく機能します。

RewriteCond %{REQUEST_FILENAME} !\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [QSA]

それで、私は何を間違っていますか?

4

1 に答える 1

1

ルールのターゲットに先頭のスラッシュを追加してみてください。Apache は、ファイル パスを参照しているのか URI パスを参照しているのかを推測する必要があり、正しく判断できない場合があります。

RewriteRule (.*)/t=[0-9]+ /$1
于 2012-07-23T15:41:18.913 に答える