Избегайте множественных перенаправлений в contao

Я проанализировал свой сайт с помощью портала web.dev от Google. Это подсказало мне, что у меня слишком много редиректов, если я вызываю URL без www и с http: он идет сначала на https и без www, затем на http с www и только потом на https и www. Это мой файл htacces:

<IfModule mod_headers.c>
    # Allow access from all domains for webfonts (see contao/core-bundle#528)
    <FilesMatch "\.(ttf|ttc|otf|eot|woff2?|font\.css)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

<files serviceaccount.json>
Order allow,deny
Deny from all
</files>


<IfModule mod_rewrite.c>
    RewriteEngine On

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

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


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


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

    RewriteRule ^ %{ENV:BASE}/app.php [L]

</IfModule>

Я вообще не вижу, где эти редиректы реализованы. Я также нашел этот вариант для прямого перенаправления. Даже если я их поставлю в файл htaccess, редиректы останутся как описано выше.

<IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(.*)$  [NC]
    RewriteRule (.*) https://www.%1/$1 [R=301,L]
</IfModule>

Можете ли вы рассказать мне, как происходят все эти редиректы и почему последний фрагмент кода не работает?


person MAESTRO_DE    schedule 06.05.2020    source источник
comment
Можете ли вы проверить в новом браузере или очистить кеш браузера.   -  person anubhava    schedule 06.05.2020
comment
Готово, та же проблема...   -  person MAESTRO_DE    schedule 06.05.2020
comment
Протестируйте в инструменте разработчика Chrome с отключенным кешированием и проверьте на вкладке «Сеть», какие URL-адреса перенаправления 301/302 вы получаете.   -  person anubhava    schedule 06.05.2020
comment
@anubhava xyz.de 301 -› xyz.de 301 –  xyz.de 301 – › xyz.de 200   -  person MAESTRO_DE    schedule 07.05.2020
comment
Если это так, то у вас есть еще несколько правил или кода, которые выполняют это перенаправление.   -  person anubhava    schedule 07.05.2020


Ответы (1)


Некоторые из этих перенаправлений могут быть выполнены вашим хостером. Кроме того, в более новых версиях Contao Contao автоматически перенаправляет на https во внешнем интерфейсе, если HTTPS включен в настройках соответствующего корня веб-сайта в бэкэнде.

В любом случае вы должны реализовать перенаправления самостоятельно, например. в вашем web/.htaccess. Например:

# Redirect to www subdomain
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Примечание. переадресация www перенаправит любой домен, который не начинается с www., на www.. Если у вас настроено несколько доменов с разными субдоменами, вам нужно будет соответствующим образом настроить перенаправление www..

person fritzmg    schedule 06.05.2020