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これまでのところ、ファイルがサブディレクトリに存在する場合はサブディレクトリにリダイレクトできます。
みなさん、ありがとうございました!