1

当以下查询字符串参数不存在时,我才想将 HTTPS 重定向到 HTTP :

https://www.example.com/index.php?p=login
https://www.example.com/index.php?p=signup
https://www.example.com/index.php?p=cart
https://www.example.com/index.php?p=one_page_checkout

也就是说,除这些之外的任何查询字符串都应从 HTTPS 重定向到 HTTP。我想确保只有我的结帐路径是 HTTP。

这可以简单地使用.htaccesswith RewriteCondand来完成RewriteRule吗?

4

3 回答 3

2

将此添加到文档根目录中的 htaccess 文件中,最好在可能已经存在的任何规则之上:

RewriteEngine On
RewriteCond %{QUERY_STRING} !(^|&)p=(login|signup|cart|one_page_checkout)(&|$)
RewriteCond %{HTTPS} on
RewriteRule ^index\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R]

RewriteCond %{QUERY_STRING} (^|&)p=(login|signup|cart|one_page_checkout)(&|$)
RewriteCond %{HTTPS} off
RewriteRule ^index\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

要使其成为永久重定向,请在方括号中的=301后面添加一个。R

于 2013-09-17T16:11:09.460 回答
0

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} !(^|&)p=(login|signup|cart|one_page_checkout)(&|$) [NC]
RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
于 2013-09-17T16:12:04.503 回答
0

只需将以下行放入您的 .htaccess 文件中:-

RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
于 2015-04-23T09:07:51.737 回答