Yii切换到HTTPS

时间:2013-08-12 14:23:59

标签: .htaccess mod-rewrite https yii

我知道,切换到HTTPS与Yii无关,而且主要是添加 rewrite rules中的.htaccess。 现在我面临一些问题。我更改了.htaccess文件后

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# manual change the url base
RewriteBase /

# otherwise forward it to index.php
RewriteRule . index.php 


RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://my.domain.de/$1 [R,L]


# manual change the url base
RewriteBase /

# otherwise forward it to index.php
RewriteRule . index.php

第一个登录页面会根据需要自动从http重定向到https,但没有加载css和图片。
我注意到这些文件的所有路径均为relative,因此找不到https://my.domain.de/css/print.css,但可以访问左http://my.domain.de/css/print.css。如果我浏览了网站css中的链接,images无处不在。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

重写条件仅影响紧随其后的规则。需要将两个!-f!-d条件应用于路由规则:RewriteRule . index.php。否则,一切都盲目地被路由到index.php并且请求实际存在的文件将无法完成。

此外,重定向需要之前路由规则,因此您需要将条件移到路由规则的正上方:

RewriteEngine on

# manual change the url base
RewriteBase /

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://my.domain.de/$1 [R,L]

# 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