
Я перешел на новый сервер, и когда я пытаюсь использовать свой сайт с префиксом www, я получаю внутреннюю ошибку сервера 500. Это работало на моем предыдущем хосте просто отлично. Вот фрагмент файла htaccess, который ссылается на www - больше нигде он не ссылается на 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.
[Ср Сен 08 13:57:24 2010] [ошибка] [клиент 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] в конец этой строки, чтобы убедиться, что другие правила каким-то образом не используют предыдущее имя хоста, что может привести к зацикливанию.
Другая возможность заключается в том, что PHP участвует в цикле перенаправления. Можете ли вы получить доступ к www-сайту с помощью Firefox и плагина livehttpheaders и поделиться заголовками здесь? Это может пролить свет на то, что вызывает цикл перенаправления.
Я не думаю, что факт вовлеченности 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>