.htaccess - 避免在 contao 中进行多次重定向
问题描述
我使用 Google 的门户网站 web.dev 分析了我的网站。这告诉我,如果我在没有 www 和 http 的情况下调用 URL,我有太多的重定向:它首先转到 https 而没有 www,然后转到带有 www 的 http,然后才转到 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>
你能告诉我所有这些重定向是如何产生的以及为什么最后一个代码片段不起作用吗?
解决方案
其中一些重定向可能由您的 Hoster 完成。此外,在较新的 Contao 版本https
中,如果在后端的相应网站根设置中启用了 HTTPS,则 Contao 会自动重定向到前端。
在任何情况下,您都应该自己实现重定向,例如在您的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.
to开头的域www.
。如果您有一个具有不同子域的多域设置,则需要www.
相应地调整重定向。
推荐阅读
- elasticsearch - elasticsearch must_not terms 子句不起作用
- python - 当我们不使用彼此相同的变量时,使用 pop 方法和 for 循环之间有什么问题吗?
- python - 在文本文件中写入一个 numpy 数组
- python - 在一个numpy数组(一个元组列表)中,通过扩展()多次处理速度很慢。我想让那部分更快
- python - 匹配字符串并替换剩余字符
- javascript - 再次点击 jQuery,应该隐藏该框(如切换)
- python - PostgreSQL显式非空违规检查发生在检查约束之前?
- javascript - 将部分 Javascript 库导入 .html 文件时遇到很多困难
- python - Python 请求给出 200 响应,而 FireFox 获得重定向
- c# - DOCX 到 PDF:SaveAs2 与 ExportAsFixedFormat 与 PrintOut