2011-11-15 6 views
0

私はこの使用しています:ユーザーのように見ているものを変更するmod_rewriteのルールに何か問題がありますか?

RewriteRule ^(.+)/?$ index.php?slug=$1 [L] 

を:

example.com/hello/world 

サーバーのように見ているものに:

example.com/index.php?slug=hello/world 

しかし、それは動作しません。 。 .htaccess自体が動作していることはわかっています。なぜなら、他の場所で使用していた他の単純なルールを試してしまったからです。これに何か問題がありますか?

ありがとうございました!

+0

正しく動作しません。あなたは書き換えループを取得しますか? (index.phpのリライトループのように見えます) –

+1

index.phpのような既存のファイルやディレクトリでルールが動作しないようにするには 'RewriteCond'をお持ちですか? –

+0

@Michael Err、いいえ、私はしません。それはそうであるように思われる!私はそれをどうやってやるか知っていますか? – samiles

答えて

1

ファイルまたはディレクトリが実際に存在する場合は、ルールを処理しないでください。これにより、ルールがindex.phpで動作しなくなり、書き換えループが発生しなくなります。また、静的コンテンツ(css、js、images)に影響を与えないようにします。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/?$ index.php?slug=$1 [L,QSA] 

注、コメントごとに、[QSA]は、既存のクエリ文字列パラメータを書き換えても保持されることを保証するために追加されます。

+1

また、 '[L、QSA]' – Jona

+0

のようなQSAパラメータを追加する必要があります。 – samiles

関連する問題