После переноса сайта wordpress на другой хостинг сайт не загружался, внутренние страницы показывались с ошибкой 500 Internal Server Error, а в логах Apache появились вот такие ошибки:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
А все из-за того что не правильно написан .htaccess.
А чтобы точно найти ошибку, включим debug для mod_rewrite.
Как включить debug для mod_rewrite
В виртуальных хостах, в зависимости от версии Apache расскоментируйте:
<VirtualHost *:80>
ServerName example.dev
DocumentRoot /var/www/vhosts/www.example.com/public
# Включить Rewrite Log Debugging в Apache 2.2
RewriteLog /var/www/vhosts/www.example.com/rewrite.log
# RewriteLogLevel 6
# Включить Rewrite Log Debugging в Apache 2.4
# LogLevel alert rewrite:trace6
</VirtualHost>
После включения в логах увидел:
rewrite 'kontakty/' -> '/new/index.php', referer: http://example.com/ trying to replace prefix /home/websites/brilliantdent-ru/www/ with /new/, referer: http://example.com/
И здесь стало понятно что в .htaccess надо удалить new, так как сайт ранее был в директории http://example.com/new
Было:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /new/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /new/index.php [L] </IfModule> # END WordPress
Стало:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress