2012-01-09 9 views
0

をリダイレクトリライトの.htaccess、私はかなり標準的なが私の.htaccessファイル内のURL

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 [NC] 

を持っていると私は、これは私のルートディレクトリ内のファイルに発生する必要があります。しかし、www.foo.com/barのようなサブディレクトリの1つ(index.phpの有無にかかわらず)に移動した場合は、www.foo.com/bar/?p=barにリダイレクトされます。?p=barの追加を防止するにはどうすればよいですか?

答えて

1

あなたは、これが最善のアプローチであれば、私は、わからない

#if it is not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
#then send it to index.php 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 [NC,L] 
0

.htaccessファイルをサブディレクトリに入れることができます。

# /bar/.htaccess 

AllowOverride none 

これにより、.htaccessの継承が防止されます。

+0

以下のようにルールが唯一の非ディレクトリに対して実行させる試すことができます。ルートレベルで彼の過度の書き換えルールを消すために、すべてのサブディレクトリを無限に更新する必要があります。 – kontur

+0

さて、はい。もう1つのオプションは、 'RewriteCond'で各サブディレクトリのチェックを追加することですが、新しいディレクトリごとにチェックする必要があります。しかし、あなたのところでは、それはおそらくもっと合理的です... – clmarquart

関連する問題