WWW プレフィックスを持つサイトにアクセスすると、500 内部サーバー エラーが発生します。

WWW プレフィックスを持つサイトにアクセスすると、500 内部サーバー エラーが発生します。

新しいサーバーに移行しましたが、www プレフィックス付きのサイトを使用しようとすると、500 内部サーバー エラーが発生します。これは、以前のホストでは問題なく動作していました。以下は、www を参照する htaccess ファイルの抜粋です。www を参照する箇所は他にありません。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/ - [L]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1
RewriteRule ^search/(.*)/(.*)/(.*)/(.*) /search.php?searchfor=$1&sortby=$2&page=$3&searchterm=$4
RewriteRule ^confirmemail/(.*) /confirmemail.php?code=$1
RewriteRule ^resetpassword/(.*) /resetpassword.php?code=$1
RewriteRule ^resendconfirmation/(.*) /resendconfirmation.php?userid=$1
RewriteRule ^categories/ /categories.php
RewriteRule ^([-_~*a-zA-Z0-9]+)(\/)?$ /memberprofile.php?username=$1
RewriteRule ^browse/audios/(.*)/(.*)/(.*)/(.*) /audios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^browse/categories/audios/(.*)/(.*)/(.*)/(.*) /categoryaudios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^audios/(.*)/(.*) /playaudio.php?audioid=$1&title=$2
RewriteRule ^download/audio/(.*)/(.*) /downloadaudio.php?AUDIOID=$1&title=$2
RewriteRule ^members/audios/(.*)/(.*) /memberaudios.php?pid=$1&username=$2
RewriteRule ^syndicate/audios/(.*)/(.*) /syndicateaudios.php?filter=$1&title=$2
</IfModule>

他に何を確認できますか?

このドメインを Plesk コントロール パネルで設定しましたが、これが問題なのでしょうか?

ご協力ありがとうございました

アップデート

www プレフィックスを使用して自分のサイトにアクセスすると、エラー ログにこれが表示されます。

[2010 年 9 月 8 日水曜日 13:57:24] [エラー] [クライアント xx.xxx.xx.xxx] 構成エラーの可能性があるため、要求が 10 の内部リダイレクトの制限を超えました。必要に応じて 'LimitInternalRecursion' を使用して制限を増やしてください。バックトレースを取得するには 'LogLevel debug' を使用してください。

アップデート2

私のサイトにはhttpd.confファイルにサーバーエイリアスがありますフォームの serverAlias www.mydomain.com- これによりリダイレクト ループが発生する可能性がありますか?

アップデート3

Apache に書き換えログを作成させたり書き込んだりすることができませんでした。また、サイトを使用している人がいるため、サービスを頻繁に再起動したくありません。

本当に助けが必要なので、この質問に懸賞金を追加しました。

答え1

これは興味深いことです。ログにはリダイレクトが発生していることが示されていますが、[R]フラグを使用するルールはありません。ただし、ルールにhttp://...が含まれている場合、[R]フラグは冗長であるため、

RewriteRule ^(.*)$ http://mydomain.com/$1

ルールが問題の原因である可能性が高いです。

私なら、その行の最後に [R=301,L] を入れて、他のルールが以前のホスト名を使用してループが発生しないようにします。

もう 1 つの可能性は、PHP がリダイレクト ループに関与していることです。Firefox と livehttpheaders プラグインを使用して www サイトにアクセスし、ヘッダーをここで共有できますか? リダイレクト ループの原因が明らかになるかもしれません。

Plesk が関係しているという事実は関係ないと思いますし、ServerAlias も関係ないと思います。これは、www.example.com と example.com の両方の仮想ホストに同じ構成を提供できるようにすることだけです。

お役に立てれば幸いです!

答え2

また、ログを書き換えるアクティブ化して何が起こるか見てみましょう。

ほとんどの場合、それは再入可能ルールです。

答え3

いかがでしょうか:

<IfModule mod_rewrite.c>
RewriteEngine On
ReWriteCond %{HTTP_HOST} !^mydomain
ReWriteRule ^(.*)$ http://mydomain.com/$1
...
</IfModule>

関連情報