2

lighttpd の mod_rewrite を使用して、特定のファイル拡張子なしでリクエストを許可したいと考えています。たとえば、次のマッピングが自動的に機能するようにします。

  • 「/index」をリクエストすると、「/index.php」が提供されます。
  • "/dir/file" => "/dir/file.php"
  • "/dir/file?args" => /dir/file.php?args"

これは、特定の拡張子 (「.php」など) の単一の書き換えルールで簡単に実行できますか?

4

4 に答える 4

3

Cassy と natbro はこれをほぼ正しく理解しましたが、user102008 がコメントしたように、これはディレクトリ インデックスを誤って書き換えます。「/」で終わるものに一致する url.rewrite-once を追加すると、機能するようです。

url.rewrite-once = (  "^(.*)/$" => "$1/" )
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
于 2012-01-05T05:13:31.073 に答える
1

テストしていなくても、試してみることができます:

url.rewrite-once = ( 
  "^([^?]*)(\?.*)?$" => "$1.php$2",
)

基本的に意味は

  • 疑問符以外のすべてを取る
  • 存在する場合は、疑問符とそれに続くすべてのものを取ります

最初の部分に書き直し、 を含めて.php、最後の部分を再度追加します。

繰り返しますが、まだテストしていません。

于 2009-12-17T21:26:18.757 に答える
0

上記のcassieの答えはほぼ正しいです。末尾のコンマを削除し、url-rewrite-if-not-file (1.4.x lighttpd 以降で利用可能) を使用することをお勧めします。これにより、同じディレクトリに存在する他のファイルを書き換えることなく提供できます。

url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
于 2010-10-28T20:46:19.087 に答える
-1

はい

^(.*).php $1 [L,R,NC,QSA]

これは、ディレクトリ内の .htaccess 用です

^/(.*).php http://same.site/ $1 [L,R,NC,QSA]

URLを変更するにはリダイレクトする必要があるため(プロキシではなく)、ドメインは「same.site」です。

于 2009-11-23T12:40:46.690 に答える