
Ich bin auf einen neuen Server migriert und jedes Mal, wenn ich versuche, meine Site mit dem Präfix www zu verwenden, erhalte ich einen internen Serverfehler 500. Auf meinem vorherigen Host funktionierte dies einwandfrei. Hier ist ein Ausschnitt der htaccess-Datei, die auf www verweist – nirgendwo sonst wird auf www verwiesen.
<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>
Was kann ich sonst noch überprüfen?
Ich habe diese Domäne mit dem Plesk Control Panel eingerichtet – vielleicht ist das das Problem?
Vielen Dank an alle für jede Hilfe
Aktualisieren
Die Fehlerprotokolle zeigen dies an, wenn ich meine Site mit dem Präfix „www“ aufrufe.
[Mi 08.09.2010 13:57:24] [Fehler] [Client xx.xxx.xx.xxx] Die Anfrage hat das Limit von 10 internen Weiterleitungen aufgrund eines wahrscheinlichen Konfigurationsfehlers überschritten. Verwenden Sie „LimitInternalRecursion“, um das Limit bei Bedarf zu erhöhen. Verwenden Sie „LogLevel debug“, um einen Backtrace zu erhalten.
Aktualisierung 2
Meine Site hat einen Serveralias in der Datei httpd.confdes Formulars serverAlias www.mydomain.com
- Kann dies eine Umleitungsschleife verursachen?
Aktualisierung 3
Ich konnte Apache nicht dazu bringen, das Umschreibeprotokoll zu erstellen oder darin zu schreiben, und ich möchte nicht zu viele Dienstneustarts durchführen, da Leute die Site verwenden.
Ich habe dieser Frage ein Kopfgeld hinzugefügt, da ich wirklich Hilfe brauche!
Antwort1
Dies ist interessant, da die Protokolle angeben, dass eine Umleitung stattfindet, Sie jedoch keine Regeln haben, die das Flag [R] verwenden. Wenn eine Regel jedoch http://... enthält, ist das Flag [R] redundant, sodass die
RewriteRule ^(.*)$ http://mydomain.com/$1
Regel ist der wahrscheinliche Kandidat für die Ursache des Problems.
An Ihrer Stelle würde ich versuchen, [R=301,L] am Ende dieser Zeile einzufügen, um sicherzustellen, dass die anderen Regeln nicht irgendwie den vorherigen Hostnamen verwenden und dies zu einer Schleife führt.
Eine weitere Möglichkeit ist, dass PHP an der Umleitungsschleife beteiligt ist. Können Sie mit Firefox und dem Plugin „livehttpheaders“ auf die WWW-Site zugreifen und die Header hier freigeben? Das könnte Aufschluss darüber geben, was die Umleitungsschleife verursacht.
Ich glaube nicht, dass die Tatsache, dass Plesk beteiligt ist, etwas damit zu tun hat, und nein, ich glaube nicht, dass der ServerAlias etwas damit zu tun hat. Dadurch kann nur die gleiche Konfiguration für beide virtuellen Hosts bereitgestellt werden: www.example.com und example.com.
Hoffentlich hilft das!
Antwort2
Es gibt auch einProtokoll neu schreiben, aktivieren Sie es und sehen Sie, was passiert.
In den meisten Fällen handelt es sich um eine Reentrant-Regel.
Antwort3
Wie wäre es mit:
<IfModule mod_rewrite.c>
RewriteEngine On
ReWriteCond %{HTTP_HOST} !^mydomain
ReWriteRule ^(.*)$ http://mydomain.com/$1
...
</IfModule>