.htaccess - Symfony3 强制 https 全部生成错误无限循环
问题描述
我在 Symfony3 中建立了网站。我想强制所有路线https。
我将此添加到我的 .htaccess 文件中:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
主页工作正常,用户使用 https 重定向到版本,但在链接为字符“/”的任何子页面上,我遇到问题“错误:无限循环”
例如,这项工作正常:
https://www.example.com/subpage1
但这会产生错误无限循环: https ://www.example.com/subpage1/subpage2
当我删除 .htaccess 中的强制 https 时,一切正常...
解决方案
避免用来.htaccess
做这样的事情。
除非您打算只在 https 中使用站点的某些部分,否则请改用 vhost 配置文件。
这是 Symfony 3 与 Apache 2 的完整示例
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://www.example.com
</VirtualHost>
<VirtualHost _default_:443>
ServerName www.example.com
DocumentRoot /var/www/www.example.com/web
<Directory /var/www/www.example.com/web>
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/www.example.com/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ErrorLog /var/www/www.example.com/var/logs/error.log
CustomLog /var/www/www.example.com/var/logs/access.log combined
</VirtualHost>
推荐阅读
- linux - Windows 上带有 Docker 的 Linux 内核与 WSL Linux 内核不匹配
- r - seq.int 有什么限制?
- angular - daterangepicker 中缺少右箭头 - Angular
- python-3.x - 反向外壳问题
- unit-testing - 使用 Vue CLI 和 mochapack 模拟模块
- xml - HTML.TextAreaFor ASP.NET MVC“模板只能用于字段访问”
- mysql - 如何验证引入外键约束不会导致问题
- java - java - 如何使用数组创建嵌套for循环以从java中的一组数字中提取特定数字?
- r - 为什么箱线图没有正确显示,只是平线?
- fortran - 将 Fortran 矩阵的元素与整个矩阵的平均值进行比较,并记住最接近它的数字的索引