は私の.htaccessファイルです:.htaccess - rewriteruleがtrueの場合は処理を停止しますか?ここ
Options +FollowSymlinks
RewriteEngine on
Rewritecond %{http_host} ^mysite.com [nc]
Rewriterule ^(.*)$ http://www.mysite.com/$1 [r=301,nc]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /404.php
第一のRewriteCond /のRewriteRuleブロックは、彼らがWWWせずにアドレスを入力した場合、WWWにユーザーをリダイレクトすることです。
2番目のrewritecond/rewriteruleブロックは、ユーザーが存在しないアドレスを入力した場合に作成したページにユーザーをリダイレクトします。
これらのルールは、それぞれが独自に動作します:
私の.htaccessファイルは、最初のブロックが含まれている場合、それは成功したのwwwアドレスに非WWWアドレスをリダイレクトします。
存在しないアドレスが入力された場合、ユーザーは正常に私のページ404.phpにリダイレクトされます。 .htaccessファイルは、両方のブロックが含まれ、非WWWアドレスが入力された場合代わりWWWアドレスに成功リダイレクト
しかし、その後、次のようになり:
(1)以下が表示されページの:
移動しました。
文書はここに移動しました。
また、要求を処理するためにErrorDocumentを使用しようとすると、500 Internal Server Errorエラーが発生しました。 mysite.comで
のApache/1.3.41サーバーポート80
(2)次のエントリは、エラーログに生成されます。
[金5月4日午前1時54分19秒2012] [エラー] [クライアント109.109.109.109] mod_rewrite: 内部リダイレクトの最大数に達しました。構成エラーが発生すると想定します。必要に応じて制限を増やすには、 'RewriteOptions MaxRedirects'を使用します。
無限ループが何らかの形で生成されているとします。
最初の条件が満たされた場合に.htaccessファイルでコマンドの処理を停止するように指示すると、問題が解決するのだろうかと思います。だから誰もこれを行う方法を知っていますか?
(サイドノート。一般的には、私は絶対に恐ろしいことに.htaccessにそこにドキュメントを見つける。誰にも同様に感じている場合、私は疑問に思う。)事前に
感謝。
私は、あなたのアドバイスを取り、最初のリライトルールは次のようになります。 'Rewriterule ^(。*)$ http://www.mysite.com/$1 [r = 301、nc、L]' すべてが正しく動作しているようです。 ありがとうございます。 – oyvey
サイトを反復する必要はありません。そして、Apache RewriteRulesはデフォルトでは貪欲です。 ☞ 'RewriteRule(。*)$ 1 [R = 404、L]' –