我的目标是在我网站的admin
目录上强制使用HTTPS。但是,使用通常的方法会产生不寻常的结果。以下是.htaccess
:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} admin
RewriteRule ^(.*)$ https://www.domain.com/admin/$1 [R,L]
但是,当我尝试打开http://www.domain.com/admin/home.php
时,不是重定向到https://www.domain.com/admin/home.php
,而是将其发送给https://www.domain.com/admin/admin/home.php
。
所以它会两次创建URL的admin/
部分。
我尝试将.htaccess
的最后一行更改为RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]
(这对我来说没有意义,但仍然尝试过)并将其重定向到相同的错误网址,这让我更加困惑。
我不确定它是否重要,但我也尝试将[R,L]
替换为[L,R=301]
,如其他地方所建议的那样,没有用。
为什么会发生这种情况?解决方案是什么?
答案 0 :(得分:0)
归因于目标网址中的/admin/
。将您的规则更改为:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^admin(/.*)?$ https://www.domain.com%{REQUEST_URI} [R,L,NC]