OK、私は.htaccessファイルの書き換えルールに夢中です!
私の希望するシナリオは次のとおりです(http://doma.in/
例としてURLを使用):
index.html
まず、ファイルが/public
サブディレクトリに存在するかどうかを確認します。もしそうなら、それを提供します- そうでない場合; サーブ(リライト)
index.php
- そうでない場合; サーブ(リライト)
私の例を拡張するために、次のURLをリクエストしたとしますhttp://doma.in/js/foobar.js
。
foobar.js
まず、ファイルが/public/js
サブディレクトリに存在するかどうかを確認します。もしそうなら、それを提供します- そうでない場合; サーブ(リライト)
index.php?controller=js%2Ffoobar.js
- そうでない場合; サーブ(リライト)
それは静的ファイルをカバーしますが、私は次のようなURLも必要ですhttp://doma.in/foo
:
foo
まず、ファイルが/public
サブディレクトリに存在するかどうかを確認します。もしそうなら、それを提供します- そうでない場合; サーブ(リライト)
index.php?controller=foo
- そうでない場合; サーブ(リライト)
そしてURL http://doma.in/foo/bar
:
- そのようにファイルに名前を付けることはできないため、ファイルはサブディレクトリに
foo/bar
存在しないと想定できます。/public
- だから奉仕する(書き直す)
index.php?controller=foo&action=bar
- だから奉仕する(書き直す)
この複雑な(私にとって)ビットがカバーされていれば、クエリ文字列をその場で使用できると確信しています。だからhttp://doma.in/foo/bar/foo/bar
役立つだろうindex.php?controller=foo&action=bar&querystring=foo%2Fbar
。
また、末尾のスラッシュが省略された場合と同じように処理されるようにしたいと思います。たとえば、次のようにhttp://doma.in/foo/bar/foo/bar
なります。http://doma.in/foo/bar/foo/bar/
ファイルが存在しないかのようにアプリ内から404を処理します。ファイルは存在するものにリダイレクトされindex.php
ます。より良い解決策がない限り、これで満足しています:)
私はこのシナリオの解決策を一日中探していたので、これがすべて理にかなっていることを本当に望んでいます。これが私が持っているすべてです。
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
#RewriteBase /prompt-v3/
#RewriteCond %{REQUEST_URI} ^/prompt-v3/(.*)$
RewriteCond $1 !^public
RewriteRule ^(.*)$ public/$1 [R]
コメントアウトされた行は、リモートホスト上にある場合のサブディレクトリを処理します。/public
これまでのところ、ファイルがサブディレクトリに存在する場合はサブディレクトリにリダイレクトできます。
みなさん、ありがとうございました!