0

すべてのリクエストを index.php にリダイレクトしたいのですが、%{REQUEST_URI} の部分は引数として index.php に渡す必要があります。また、 %{REQUEST_URI} 部分が既存のファイル/ディレクトリを指している場合でも、リダイレクトを実行したいと考えています。たとえばjs、ドキュメント ルートに というディレクトリがあります。のように自分のサイトにアクセスすると、ディレクトリのコンテンツをブラウザに表示する代わりに、http://www.example.com/jsリダイレクトしたいと思います。http://www.example.com/index.php?uri=js

そこで、.htaccess ファイルに次の 2 行を追加しました。

RewriteEngine On
RewriteRule .* index.php?uri=%{REQUEST_URI} [QSA]

しかし、これはうまくいきません。

まず、既存のファイルへのパスを指定すると、たとえばhttp://www.example.com/foo.css、ファイルのコンテンツがブラウザに表示されます。(私が欲しいのはhttp://www.example.com/index.php?uri=foo.css) 次に、ディレクトリにアクセスするとき、たとえばhttp://www.example.com/js、リダイレクトが発生しますが、css が有効にならず、サイトが破損しているように見えます。

良いニュースは、ルート内のファイル/ディレクトリを指していない任意の文字列を指定すると、正常に機能することです。これをデバッグするのに何時間も費やしましたが、手がかりがありません。どうすれば問題を解決できますか?

参考までに、Apache 2.4.3 を使用しています。

4

1 に答える 1

0

多分この次のコード:

RewriteEngine On
RewriteRule ^index.php?uri=(.*)$ $1 [L]

それがあなたが望むかどうかはわかりません。

于 2013-03-18T09:36:02.367 に答える