我最近向我的网站添加了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”
答案 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]
)