我的.htaccess中有以下内容 - 干净的网址声明和https重定向都可以单独工作,但放在一起导致连续重定向错误(此服务器以永远不会完成的方式重定向)。
这是我的.htacess:
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
# force to use https
#RewriteCond %{HTTPS} !=on
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
知道如何解决这个问题吗?
谢谢
答案 0 :(得分:2)
希望我没有迟到,因为我偶然发现了同样的问题并在一天前发现了冲突。
在.htaccess
文件中写下以下内容:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
第一条规则会自动将任何HTTP请求重定向到HTTPS并(通过关键[L]
标记)停止其他替换,这会导致页面混乱(具体而言,图像和CSS样式表将无法提供)。
第二个是Yii建议的方法来检查特定URL是否对应于真实文件或目录,如果不对应,则将请求转发到index.php
(Web应用程序的引导程序文件)。 (然后,应用程序配置文件中的规则应该完成其余的工作。)