2009-03-30 10 views
12

を働いていない!-fルールを見ています"しかし、私はまだ書き換えが評価されていることがわかります。私の書き換えコード:の.htaccess私は何年も私のCMSのための単純なmod_rewriteのルールを使用していると、新しいバージョンを作っています

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ index.php?page=$1 
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&var=$2 

私は/ページの/ varをロードし、それはindex.phpのページ=ページ& VAR = VARとして正常に動作しますが、私は/css/file.cssロードしようと、それはインデックスをロードします?。 /css/file.css であるにもかかわらず、書き換えセクション全体が評価されるべきではないにもかかわらず、php?page = css & var = file.css

私はどうやら誰かが私はこれを理解することができ、独自のロジックを無視htaccessのを見たことがありませんか?誰もこれのようなものを走ったことはありますか?

答えて

3

まあ、それは動作するはずです。あなたのリクエストをデバッグするには

RewriteLog /var/log/rewrite.log 
RewriteLogLevel 3 

はあなたの.htaccessファイルに次の小道具を設定してみてください。完了したらこの値をリセットすることを忘れないでください。さもなければ、あなたは満ちたハードドライブで終わるでしょう。

+0

+1 RewriteLogについては、私の書き換えルールをデバッグするのに役立ちました。ファイルが存在しない場合は、すべてのこれらの年、それは私のロジックが事故で働いていたが判明し、このようなmod_rewritesをやった後、素晴らしいおかげでそんなに –

25

RewriteCondition Sは次のルールに適用されます。あなたはこれをしたい:

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

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&var=$2 
+2

は、ありがとうございました!! ...それがいることを心に留めておくためにも良いことですそれは404でなければ、それはちょうどそれを次のルールに渡すでしょう。 –

+0

...、素晴らしいことだ – Roberto

+0

@コリン - 私の感想。今、私はそれが救済だかどうかを把握する必要があり、または心配... – Ben

1

は、おそらくそれはやっているものをデバッグするRewriteLogRewriteLogLevelを使用していますか?あなたは、Apache 2.2を使用している場合

13

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.htmlから)、その後、あなたはこれを読まなければならない:

http://amandine.aupetit.info/135/apache2-mod_rewrite/

スポイラーを:何を記述する必要がありますが実際です:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-l   

メル。

+0

'%{DOCUMENT_ROOT} 'を追加して問題を解決しました。 – hlcs

+1

私はこれをsoooのために長く探していて、私の問題を完全に解決しました(私はvhostではなくコンテナを使用しています)。ありがとう! – Gildas

+0

質問者が答えを受け入れないので、私の答えが最もアップノートを本当に得れば素晴らしいだろう... – Merc

関連する問題