2011-07-19 8 views
0

これは、任意のURIを取得し、それを処理するスクリプトにクエリ文字列の一部として送信することになっています。mod_rewrite初心者 - これは正しいですか?

RewriteEngine On 
RewriteCond %{REQUEST_URI} !(css.php|gif|jpe?g|png|css|js|json|xml|ico)$ 
RewriteRule ^(.*)(/)?$ index.php?where=$1 [QSA,L] 

私はいくつかのサーバーで動作し、他のサーバーでは動作しないためです。いくつかの点では、URLの書き換えがオフであるかのようにすべてを無視し、上記の内容の.htaccessがアップロードされるたびに悪い要求を報告するものもあります。

答えて

1

BTH私は、このルールを少し変更します

RewriteEngine On 
RewriteCond %{REQUEST_URI} !\.(css.php|gif|jpe?g|png|css|js|json|xml|ico)$ 
RewriteRule ^(.*)/?$ index.php?where=$1 [QSA,L] 
  1. 追加\.のRewriteCondパターンにそれだけで、このような拡張子を持つファイルに対して動作することを確認するために(そうでないパターンもそのテキストを持つファイルにマッチします最後に、/something/mygif <>/something/my.gif)。

  2. RewriteRuleパターンで(/)/に置き換えました。機能上の違いはありませんが、リソースは少し軽いです。戻るメイントピックに


  • 最も可能性の高い.htaccessファイルがサポートされていません。その後、それは、 "URL書き換えがオフになっているかのように全体を無視" した場合/ (またはAccessFileNameディレクティブで設定されたものとは異なる名前を持つはずです(例:AccessFileName ht.access)。

    これをチェックするには、他のディレクティブを.htaccessに配置し、それが機能するかどうかを確認してください(ErrorDocument 404 /404.phpまたはDirectoryIndex index.phpなど)。またはmod_rewriteを、それは、これらのディレクティブは、.htaccessファイルに置くことを許可されていない可能性が高い、その後を「上記内容の.htaccessファイルがアップロードされるたびに不正な要求を報告する」場合

  • see docsAllowOverride Allまたは少なくともAllowOverride FileInfoが必要です)有効になっていません。

    Apacheのエラーログを確認してください。この瞬間を示すエントリが必要です。