2017-10-29 5 views
1

ルールの一部が正しく動作しており、すべてがconfファイルに正しく設定されているため、書き換えが正しく動作するようになります。 しかし、いくつかのルールが失敗しているか、URL文字列がそのルールに到達せず、すでにリダイレクトされている可能性があります。このルールのようApache Rewrite Ruleが正しく動作しない

RewriteRule coach/(.*)$ coach.php?coach=$1 

私はURL localhost/coach/fitnessそれはlocalhost/coach.phpにリダイレクトされますし、何のGETのparamはPHPファイルに受信されない呼び出す場合

今、私は

RewriteRule coach/(.*)$ cp.php?coach=$1 

にこのルールを変更してもcp.php に自分のディレクトリにcoach.phpからファイル名を変更した場合、それは与えられたURLのために完全に正常に動作し、GETのparamが受信されます。

URL文字列名のファイルが存在する場合、そのファイルにのみリダイレクトされ、リダイレクトルールは適用されません。

答えて

1

のMultiViews無効にするには、この追加:

を サーバが/ some/dir/fooへのリクエストを受信した場合:有効にすると、MultiViewsオプションが何をするかを説明し、

Options -MultiViews 

Apache docs on mod_negotiationを/ some/dir/fooは が存在しない場合、サーバは foo。*という名前のすべてのファイルを検索するディレクトリを読み取り、それらのファイルにすべて という名前の型マップを効果的に作成します。同じメディアタイプとコンテンツエンコードの場合は、クライアントがその名前の1つを要求した場合には があります。それから がクライアントの要件に最も適したものを選択し、 というドキュメントを返します。

用途:

Options -MultiViews 
RewriteRule coach/(.*)/?$ coach.php?coach=$1 [NC,L] 
+1

おかげでたくさんの男!それは魅力のように働いた。 –

+1

mod_negotiation(つまりMultiViews)は、_before_ mod_rewriteというURLを処理することに注意することが重要です。 – MrWhite

関連する問題