htaccess中的强制SSL仅转到主页

时间:2018-07-18 13:09:20

标签: .htaccess ssl redirect mod-rewrite

我最近向我的网站添加了SSL。我已将代码添加到.htaccess文件中以强制使用https。问题是我转到站点内页面的外部链接现在被重定向到主页。我使用的代码是:

RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.watsonelec.com%1 [R,L]

我认为问题出在最后一行,因为规则告诉它重定向到主页。我似乎找不到一条规则,该规则要求它进入链接中提供的URL,但给它一个https而不是HTTP。

我确实搜索了这个主题,但是我发现的所有代码都与我已经拥有的代码相似。谢谢你的帮助。

更新

我有两个网站正在尝试解决这个问题:watsoneneryerys.com和watsonelec.com。

当我尝试

RewriteOptions InheritDownBefore
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.watsonenergysolutions.com/$1 [R,L]

它仍然发送到首页

当我尝试

RewriteOptions InheritDownBefore
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^ https://www.watsonenergysolution.com%{REQUEST_URI} [R,L]

我收到一条错误消息,提示Safari无法打开页面“ https://www.watsonenergysolutions.com/index.php”,因为Safari无法找到服务器“ www.watsonenergysolutions.com”

1 个答案:

答案 0 :(得分:0)

%N后向引用是您在RewriteCond中匹配的。您的情况是空的。这就是为什么任何东西都将进入主页的原因。

您需要使用$1%{REQUEST_URI},以下两条规则是等效的(第二条规则可能会更快,因为您不必进行不必要的重新匹配)

RewriteRule ^(.*)$ https://www.watsonelec.com/$1 [R,L]

RewriteRule ^ https://www.watsonelec.com%{REQUEST_URI} [R,L]

注1:%{REQUEST_URI}的值始终始于前导/,而您可以在RewriteRule中匹配的内容从不以前导/

开头

注2:R标志默认使用302重定向。也许您想使用301[R=301,L]