2012-01-17 10 views
4

私の周りをグーグルで回った後に私がどこにも書き換えルールを設定するのに少し問題がありました。私はこのようなURLの設定の標準リライトを持っている:.htaccess書き換え - パラメータと同じ名前のファイルが存在する場合に失敗します。

RewriteRule ^services/(.*)/ /services/index.php?content=$1 [L] 

のサイトには、DBから関連コンテンツを要求するためにcontentの値を使用していますが、単にURLがきれいに見えるのです。標準的なもの。これはある程度機能します。例えば、私のURLが/services/testimonials/の場合、ルールは正常に動作します。コンテンツが読み込まれ、ページが正常に表示されます。多くのグーグルや頭(のいずれかからほとんど進歩して)叩いた後、私は/services/Training/にURLを変更した場合(気づくことを発見し

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'redirect:/services/index.php' (include_path='[removed]') in Unknown on line 0 

を:私は(例えば/services/training/)ものの、いくつかのURLを見ていたことを示すエラーでした大文字T)それは働いた。これはすぐにURLの矛盾について考えさせてくれました。(おそらく最初の見方で考えたはずです)。どのURLが正常に動作しているかどうかを確認した後、私はドットを接続し、サブディレクトリに同じ名前のファイルがURLと同じであることを発見しました。その文は混乱しています。基本的には、/services/training/というURLを使用することはできません。エラーの原因となるファイル/services/training.phpがあるためです。

URLに矛盾するファイルの名前を変更するという明白な修正がありますが、同じ名前のファイルを無視するような書き換えルールの方法がありますか?

+2

多分[this](http://stackoverflow.com/questions/7722846)がお手伝いしますか?その質問で受け入れられた答えによれば、 'Line 0'は通常、スクリプトの実行を開始する前にPHPからエラーが発生しているため、サーバー設定エラーを示します。 Apacheエラーではなく、PHPエラーが発生していることに注意してください。これは、PHPがApacheによって起動されていることを示しています。 – DaveRandom

+0

ありがとう@DaveRandom、解決された問題は、私が持っているものとは多少異なりますが、PHPエラーでは意味があります。 –

+0

前のパスを変数として追加せずにリダイレクトを試みましたか?とにかく '$ _SERVER ['REDIRECT_URL']'でそれを読むことができます。 – Ranty

答えて

5
Options -MultiViews 

これにより、urlがtraining.phpにマッピングされないようにする必要があります。ただし、/services/training.phpがマッピングされないようにすることはできませんが、問題はありません。

+0

最も簡単な答えが常にベストです。ありがとう@Gerben –

+1

+1私はこれを忘れていたとは思わない。何年か前に、この非常に理由で 'mod_rewrite'を始めるのに私はしばらく時間がかかりました。 –

+0

@ÁlvaroG.Vicario問題の解決策としてこの1行のコードを投稿した回数は面白いです。 – Gerben

関連する問題