我有一个电子商务网站,我只想在位于 https://mysite.com/buy 的网站的电子商务部分启用 https
由于我页面上的所有链接都是相对的,当有人访问 http://mysite.com 时并点击购买,它们将被带到 http://mysite.com/buy
此外,如果他们访问 https://mysite.com/buy并单击指向另一个页面的链接,它们将被带到 https://mysite.com .
我只希望在该部分使用 https 的原因是我有无法通过 https 发送的外部元素(即 Google map 、Youtube、Twitter 等)。
有没有一种方法可以使用 htaccess 使/buy 目录强制使用 https,但其他所有页面都强制使用 http?
编辑: 如果有人感兴趣,我可以使用 PHP 解决这个问题。我仍然更喜欢 htaccess 解决方案,但现在可以使用:
if($_SERVER['HTTPS'] == "on") {
if(strpos($_SERVER['REQUEST_URI'],"buy") === false) {
Header("Location: http://$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']");
}
}
最佳答案
在您的 .htaccess 文件中试试这个:
Options +FollowSymLinks
RewriteEngine on
# redirect for http /buy page
RewriteCond %{SERVER_PORT} =80
RewriteRule ^buy/?$ https://mysite.com/buy [R=301,QSA,L,NE]
# redirect for https non /buy pages
RewriteCond %{SERVER_PORT} =443
RewriteCond %{REQUEST_URI} !^/buy [NC]
RewriteRule ^/?(.*)$ http://mysite.com/$1 [R=301,QSA,L,NE]
R=301
将重定向到 https 状态 301
L
将制定最后一条规则
NE
用于无转义查询字符串
QSA
将附加您现有的查询参数
NC
忽略大小写比较
$1
是您的 REQUEST_URI
关于.htaccess - 如何使用 htaccess 仅在某些页面上启用 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720463/