1

書き換えルールの結果について非常に混乱しています。WAMP を使用してローカル マシンでホストしています。

RewriteEngine on
RewriteBase   /niklasrosenstein/

RewriteCond   %{REQUEST_URI}    !res/(.+)$
RewriteCond   %{REQUEST_URI}    !index.php$
RewriteRule   ^(.*)$            index.php?uri=$1 [QSA]

に行く

http://localhost/niklasrosenstein/res

に展開します

http://localhost/niklasrosenstein/res/?uri=res

ブラウザのアドレスバーに。Firefox 14、Opera 11.62、Internet Explorer 8 でテストしました。

URL の末尾にスラッシュを追加すると、次のようになります。

http://localhost/niklasrosenstein/res/

大丈夫です。

ブラウザのアドレスバーで URL が調整される理由を知っている人はいますか? あいまいな URL フォーマットを取り除くためにmod_rewriteを使用したいのですが、その問題は実際にそれを壊します..

4

1 に答える 1

2

ブラウザのアドレスバーで URL が調整される理由を知っている人はいますか?

これは、mod_dir/mod_rewrite の競合のようです。デフォルトでは、mod_dir がロードされ、ディレクトリ モジュールのデフォルトは次のようになります。

DirectoryIndex index.html
DirectorySlash On

2 番目のデフォルトでは、要求がディレクトリにアクセスするように見え、末尾のスラッシュが欠落している場合は常に、スラッシュを含む同じ URI に 301 リダイレクトします。これは URI ファイル マッピング パイプラインのどこかで発生し、ルールを介して mod_rewrite が適用する内部書き換えに干渉しています。

すべてを 経由でルーティングしているため、 DirectorySlash をオフにしindex.phpても問題ない可能性があるため、ディレクトリの htaccess ファイルでオフにしてみてください。/niklasrosenstein/

DirectorySlash Off

それ以外の場合は、mod_rewrite を使用して処理を試すことができます。

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond !.+[^/]$
RewriteRule ^(.+)$ $1/ [L]
于 2012-09-08T14:36:16.050 に答える