@Ysery

Некорректно обрабатываются совместные правила .htaccess, как исправить?

Доброго времени суток, уважаемые специалисты.

Есть вот такое правило:

# BEGIN WPSuperCache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#If you serve pages from behind a proxy you may want to change 'RewriteCond %{HTTPS} on' to something more sensible

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTPS} on
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html" [L]
</IfModule>

# END WPSuperCache


Этот код берёт закешированные страницы сайта и быстро их выводит.

Я пытался вставить вот эти строки кода перед ним (ещё пытался и после - результат не меняется):

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !(^|&)srp=
RewriteCond %{QUERY_STRING} !(^|&)srk=
RewriteRule ^(.+?)\.html$ https://%{HTTP_HOST}/$1.html? [L,R=301]

RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html? [L,R=301]


Эти правила нацелены на отсечение всего, что после .html за исключением пары запросов или если в ссылке имеется /amp/ на конце (это AMP страницы).

Но в итоге при нажатии по любой ссылке со статьёй перебрасывает (в качестве примера)
https://site.ru/wp-content/cache/supercache/site.ru/statiya-o-tom-to.html/
с ошибкой "слишком много переадресаций".

Как это поправить?
  • Вопрос задан
  • 15 просмотров
Решения вопроса 1
@dodo512
RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html? [L,R=301]

Тут нужно добавить исключение для папки с кэшем.

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !(^|&)srp=
RewriteCond %{QUERY_STRING} !(^|&)srk=
RewriteRule ^(.+?)\.html$ https://%{HTTP_HOST}/$1.html? [L,R=301]

RewriteCond %{REQUEST_URI} !^/wp-content/cache/
RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html? [L,R=301]

Редиректы ставить выше правил WPSuperCache.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы