.htaccess - 如何使用 htaccess 仅在某些页面上启用 https?

标签 .htaccess ssl https

我有一个电子商务网站,我只想在位于 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/

相关文章:

asp.net-mvc - ASP MVC 3 cookie 丢失 HttpOnly 和 Secure 标志

.htaccess - 删除 htaccess 中的特定查询字符串键/值对(但保留其他完整)

ruby-on-rails - 将 SSL 添加到 Heroku 应用程序和 godaddy - Rails

java - 异常无法验证 spring MVC 中的目标证书

ssl - FTPS 2-5 秒延迟

ssl - 亚马逊小部件和 SSL

PHP 扩展无法在 Web 目录中运行,而 .html 扩展可以运行

php - .htaccess 中的语言参数未正确映射

php - 如何使用(mod rewrite powered)漂亮的 URL 读取 $_GET 变量

javascript - 这是安全连接吗?