使用YII清除.htaccess中的URL和https重定向冲突

时间:2012-05-04 12:18:18

标签: .htaccess apache2 yii

我的.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]

知道如何解决这个问题吗?

谢谢

1 个答案:

答案 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应用程序的引导程序文件)。 (然后,应用程序配置文件中的规则应该完成其余的工作。)