我正在尝试在网站的某些网页和子目录上强制使用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使用相同的确切代码,然后就可以了。我无法在该页面上测试它,因为我不再拥有它,但我实际上是复制粘贴重写规则并更改了页面的名称。
答案 0 :(得分:0)
<强> The first rewrite works, but the second one doesn't.
强>
是的,不会因为这些原因:
/
不匹配(您在第1条规则中可选)也可以使用OR组合这两个规则。有了这些建议,请用以下代码替换您的代码:
RewriteCond %{HTTPS} off
RewriteRule ^/?(admin/|en/checkout\.php) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]