1

我试图在网站的某些页面和子目录上强制使用 https,但它仅适用于子目录,而不适用于页面。

这是我当前的 htaccess 文件:

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{HTTPS}  off
RewriteRule ^/?admin/ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]
RewriteRule ^/checkout.php https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]

第一次重写有效,但第二次没有。因此,如果我导航到 www.domain.com/admin/ 它将重定向到https://domain.com/admin/但如果我导航到 www.domain.com/en/checkout.php 它不会重定向到https 版本。这是为什么?我记得只在不同的页面而不是 checkout.php 上使用相同的确切代码,并且它当时有效。我无法在该页面上对其进行测试,因为我不再拥有它,但我确实复制粘贴了重写规则并更改了页面名称。

4

1 回答 1

0

The first rewrite works, but the second one doesn't.

是的,它不会因为这些原因:

  1. RewriteCond 仅适用于立即 RewriteRule
  2. RewriteRule 与 .htaccess 中的前导不匹配/(您在第一条规则中将其设为可选)

也可以使用 OR 组合这两个规则。使用这些建议替换您的代码:

RewriteCond %{HTTPS} off
RewriteRule ^/?(admin/|en/checkout\.php) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
于 2013-07-16T15:46:41.610 回答