2013-07-14 3 views
12

私はhtaccess内でRewriteEngine Onを1回だけ使用できるかどうかは、IfModule mod_rewrite.cに埋め込まれているか、毎回を使用しなければならないのですか?が埋め込まれていますか?毎回<IfModule mod_rewrite.c>でRewriteEngineをオンにしますか?

以下の例を参照してください。ありがとう

<ifModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{QUERY_STRING} /?author [NC] 
RewriteRule .* - [F] 
</ifModule> 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{QUERY_STRING} g= [NC] 
RewriteRule ^(.*)$ - [F,L] 
</IfModule> 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
+1

また、複数の 'RewriteBase'ディレクティブを避けるべきです。エラーは発生しませんが、1つの.htaccessファイルに複数のエラーが存在することは無効です。最後のものが.htaccessファイル全体を勝ち、コントロールします。このファイルでは、とにかく不要です。AFAIKこれは 'RewriteRule'ディレクティブに相対パス置換がある場合にのみ必要です。 – MrWhite

答えて

13

すべての書き換えコードの周りに1つのチェックを入れることができます。

あなたのコードから、あなたが作業しているサイトが正しく機能しないか、またはmod_rewriteがすべて有効になっていないと思われます。そのような場合、私はmod_rewriteのチェックを完全に省略して、Webサーバーが有効になっていなければ失敗させます。

mod_rewriteが有効になっていない状態でWebサーバーにコードをインストールした場合、デバッグして正確な問題を特定するのがずっと簡単になります。

関連する問題