0

こんにちは、見つからないすべての URL の index.php のコンテンツを表示する必要があります。たとえば、

http://domain.com/random must show http://domain.com/index.php content
http://domain.com/random/random.html must show http://domain.com/index.php content
http://domain.com/random/rand/random.php must show http://domain.com/index.php content

以下のコードを試しましたが、まだエラーが見つかりません

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/(.*?)/?$ /$1/index.php [L]
4

1 に答える 1

1

ここでの問題は、 を使用して、書き換えられた URL に要求されたパスの一部を含めていることです$1。これにより、ルールの最初の括弧で囲まれた部分が新しい URL に効果的に挿入されます。これは、 に対するリクエストhttp://domain.com/random/rand/random.phpがファイルを返そうとすることを意味しますhttp://domain.com/random/index.php

/さらに、正規表現で必要な がURL に含まれていないため、ルールは最初の例と一致しません。

代わりに、要求された URL がファイルまたはディレクトリ (またはリンク) でない場合は、すべてを index.phpに書き換えます。

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* /index.php [L,R]

フラグを追加したことに注意してくださいR。これは、要求元のシステム (ブラウザー) が URL が変更されたことを確認することを意味します...これがあなたが望むものかどうかはわかりません.

于 2013-08-29T08:20:09.607 に答える