避免在contao中出现多个重定向

问题描述 投票:0回答:1

我已经分析了我的网站与门户web.dev从谷歌。这告诉我,我有太多的重定向,如果我调用没有www和http的URL:它首先到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>

你能告诉我这些重定向是怎么来的吗,为什么最后的代码片段不能用?

.htaccess mod-rewrite contao
1个回答
0
投票

有些重定向可能是由你的主机完成的。另外,在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. 相应的重定向。

© www.soinside.com 2019 - 2024. All rights reserved.