对于某些子域,Apache将安全重定向到非安全

时间:2012-01-18 19:07:16

标签: php apache mod-rewrite redirect subdomain

我有几个具有相同子域的域,可以安全地访问,也可以不安全访问。我需要将来自重定向 .somesite.com的每个请求重定向到重定向到安全站点。我需要原始网址,域名,以及网站是否被要求保密。

  

http://redirect.site1.com/page?id=1

     

重定向到

     

https://process.site4.com/page?id=3&domain= a.site1.com &安培;安全= 0

  

https://redirect.site2.com/page?id=2

     

重定向到

     

https://process.site4.com/page?id=3&domain= a.site2.com &安培;安全= 1

  

http://redirect.site3.com/page?id=3

     

重定向到

     

https://process.site4.com/page?id=3&domain= a.site3.com &安培;安全= 0

  

http://www.site3.com/page?id=3

     

仍为

     

http://www.site3.com/page?id=3

1 个答案:

答案 0 :(得分:1)

我假设你想在重定向中匹配id查询字符串吗?

在文档根目录中的.htaccess文件中尝试此操作(或在服务器/ vhost配置中,将^page$正则表达式更改为^/page$):

RewriteEngine On

# check if secure= is already set, and set it either to 1 or 0
RewriteCond %{QUERY_STRING} !secure=
RewriteCond %{HTTPS} on
RewriteRule ^page$ /page?%{QUERY_STRING}&secure=1 [L]

RewriteCond %{QUERY_STRING} !secure=
RewriteCond %{HTTPS} off
RewriteRule ^page$ /page?%{QUERY_STRING}&secure=0 [L]

# check if the host starts with a "redirect." and match against the "/page" URI
RewriteCond %{HTTP_HOST} ^redirect\.(.+)$ [NC]
RewriteRule ^page$ https://process.site4.com/page?domain=a.%1 [QSA,R,L]

最后一条规则中的QSA确保将'secure ='和原始'id ='查询字符串参数添加到URL上。