lighttpd の mod_rewrite を使用して、特定のファイル拡張子なしでリクエストを許可したいと考えています。たとえば、次のマッピングが自動的に機能するようにします。
- 「/index」をリクエストすると、「/index.php」が提供されます。
- "/dir/file" => "/dir/file.php"
- "/dir/file?args" => /dir/file.php?args"
これは、特定の拡張子 (「.php」など) の単一の書き換えルールで簡単に実行できますか?
Cassy と natbro はこれをほぼ正しく理解しましたが、user102008 がコメントしたように、これはディレクトリ インデックスを誤って書き換えます。「/」で終わるものに一致する url.rewrite-once を追加すると、機能するようです。
url.rewrite-once = ( "^(.*)/$" => "$1/" )
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
テストしていなくても、試してみることができます:
url.rewrite-once = (
"^([^?]*)(\?.*)?$" => "$1.php$2",
)
基本的に意味は
最初の部分に書き直し、 を含めて.php
、最後の部分を再度追加します。
繰り返しますが、まだテストしていません。
上記のcassieの答えはほぼ正しいです。末尾のコンマを削除し、url-rewrite-if-not-file (1.4.x lighttpd 以降で利用可能) を使用することをお勧めします。これにより、同じディレクトリに存在する他のファイルを書き換えることなく提供できます。
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
はい
^(.*).php $1 [L,R,NC,QSA]
これは、ディレクトリ内の .htaccess 用です
^/(.*).php http://same.site/ $1 [L,R,NC,QSA]
URLを変更するにはリダイレクトする必要があるため(プロキシではなく)、ドメインは「same.site」です。