Request exceeded the limit of 10 internal redirects due to probable configuration error

После переноса сайта 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.

Читать дальше

mod_rewrite: как включить mod_rewrite

Чтобы включить mod_rewrite в apache2:

sudo a2enmod rewrite

Чтобы mod_rewrite включился на определенном хосте (т.е. сайта), необходимо в /etc/apache2/sites-available/имя хоста (меняем у элемента <Directory /var/www/> “AllowOverride none” на “AllowOverride all”)

Перегружаем apache2:

/etc/init.d/apache2 restart

Также смотрим .htaccess в корневом каталоге хоста  (пример с htaccess c wordpress):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Какие модули установлены в apache2:

apache2ctl -M

Как переадресовывать HTTP-соединение на HTTPS в apache web-сервере?

Http-соединения могут быть переадресованы на https с помощью модуля apache mod_rewrite, который должен быть доступен в любой версии apache. Создайте файл с именем .htaccess в корневом каталоге сайта, который содержит следующие строки:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Читать дальше

Обезопасим Web-server Apache2, PHP, MySQL

Скрываем информацию об операционной системе, версии apache, php на страницах 404, 500, 403 и т.д.
В /etc/apache2/conf.d/security
ServerSignature Off
ServerTokens Off  (Отвечает за отображение информации о сервере в http заголовках)
ServerTokens Prod
Редактирем файл php.ini:
expose_php = Off  (Отвечает за показ версии интерпретатора php. Может принимать значения Off/On. Его тоже убираем с глаз долой)

Читать дальше