目录的HTTPS重定向无法正常工作

时间:2014-10-28 15:01:20

标签: regex apache .htaccess mod-rewrite redirect

我的目标是在我网站的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],如其他地方所建议的那样,没有用。

为什么会发生这种情况?解决方案是什么?

1 个答案:

答案 0 :(得分:0)

归因于目标网址中的/admin/。将您的规则更改为:

RewriteEngine On 

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^admin(/.*)?$ https://www.domain.com%{REQUEST_URI} [R,L,NC]