如何仅在具有htaccess的某些页面上启用https?

Jar*_*red 6 .htaccess ssl https

我有一个电子商务网站,我想仅在位于https://mysite.com/buy的网站的电子商务部分启用https

由于我网页上的所有链接都是相对的,当有人访问http://mysite.com并点击"购买"时,他们会被带到http://mysite.com/buy

此外,如果他们访问https://mysite.com/buy并点击指向其他页面的链接,则会转到https://mysite.com.

我只想在那一节上使用https的原因是因为我有无法通过https发送的外部元素(即谷歌地图,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']");
    }
}
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 6

在你的.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]
Run Code Online (Sandbox Code Playgroud)

R=301将重定向与https状态301
L将使最后一个规则
NE是没有转义查询字符串
QSA将附加您的现有查询参数
NC是为了忽略大小写比较

$1 是你的REQUEST_URI