Слишком много перенаправлений с Symfony 4 - PullRequest
1 голос
/ 03 июня 2019

Я опубликовал веб-сайт Symfony 4, который я могу посещать без проблем. Однако большинство людей получают ошибку:

Слишком много перенаправлений

Читая об этом, я полагаю, что есть какой-то цикл перенаправления. Проблема в том, что я не могу воссоздать проблему самостоятельно, поэтому я не могу тестировать разные решения. Я не понимаю, почему у меня нет проблемы, в то время как другие имеют. Я использую Apache со следующим файлом .htaccess:

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]

    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>

Можете ли вы увидеть, если что-то не так? А также, почему у меня нет такой же проблемы?

Редактировать: еще одна странная вещь: люди, которые видят ошибку, могут посетить домен, перейдя по адресу www.domain.com/page (где это настоящая страница). Это просто домашняя страница, которую они не могут посетить напрямую. Когда они «входят» с другой страницы, они могут посетить домашнюю страницу.

Edit2: запуск теста на www.redirect-checker.org это результат:

Результат

https://www.studiosaam.nl 302 найдено /? _ Locale = de 302 найдено /? _ locale = de 302 Found /? _ locale = de 302 Found /? _ locale = de 302 Found /? _ locale = de 302 Found /? _ locale = de 302 Found /? _ locale = de 302 Found /? _ locale = de 500 Обнаружена внутренняя ошибка сервера:

Слишком много перенаправлений. Пожалуйста, попробуйте уменьшить количество переадресаций для https://www.studiosaam.nl. На самом деле вы используете 8 перенаправлений. в идеале Вы не должны использовать более 3 перенаправлений в цепочке перенаправлений. Больше чем 3 перенаправления произведут ненужную нагрузку на ваш сервер и снижает скорость, что приводит к плохому пользовательскому опыту. Вы используете редирект 302. Это означает, что фактически контент временно недоступен и скоро вернется. Чтобы использовать 302 Перенаправление для обычно перемещаемых страниц - плохая идея. Поисковый бот может не следовать за ним или обращаться с ним как с временным. Для SEO это тоже плохая идея, потому что никакой ссылочный сок не будет передан на связанный стр.

1 Ответ

0 голосов
/ 03 июня 2019

Оказывается, эта проблема была связана с конфигурацией Symfony, а не с Apache.Проблема возникла из-за того, что несколько locales были определены в services.yaml , но фактически не были доступны.Я не смог воспроизвести проблему, потому что локаль моей машины en (английский), которая не выдает никаких ошибок.Другие пользователи с другим locale (например, de) вступили в цикл, когда Symfony попытался переадресовать пользователя на /?_locale=de, который не существовал, поэтому был отправлен обратно на /, а затем снова на /?_locale=deи т.д ...

Я решил проблему, изменив следующий код в services.yaml :

parameters:
    locale: 'en'
    app_locales: en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN|bg|tr

на

parameters:
    locale: 'en'
    app_locales: en
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...