我知道,切换到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
无处不在。
有什么建议吗?
答案 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