我有三条.htaccess规则:
这是文件的样子:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
所有内容都有效,但如果没有https
且没有www
,那么用户会被https://
重定向到www.
,但{{1}也出现了。
e.g。
index.php
......正被重定向到......
http://domain.com/test
而不是......
https://www.domain.com/index.php/test
可能是什么问题?
非常感谢, 维拉德
答案 0 :(得分:0)
不确定为什么您使用index.php
规则的直通... documentation州:
默认情况下,RewriteRule中的目标(或替换字符串)被假定为文件路径。使用[PT]标志会将其视为URI。也就是说,使用[PT]标志会导致RewriteRule的结果通过URL映射传回,因此基于位置的映射(例如Alias,Redirect或ScriptAlias)可能有机会生效。
由于您未使用Alias
,Redirect
或ScriptAlias
,PT
不适用于您的规则集。
RewriteRule ^ index.php [L]
或者,以下之一:
RewriteRule .* index.php [L]
RewriteRule (.*) index.php/$1 [L]