mod_rewrite安全重定向

时间:2011-07-07 14:13:32

标签: mod-rewrite

尝试将mod_rewrite尝试将非安全页面重定向到安全页面。这有效:

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} (help/returns) 
RewriteRule .? https://mysite.localhost/%1/ [R=301,L]

但这不是:

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP:Host} (mysite.localhost|mylivesite.com)
RewriteCond %{REQUEST_URI} (help/returns) 
RewriteRule .? https://%1/%2/ [R=301,L]

它试图给我的网址是https://help/returns//

我似乎无法将HTTP:host放入最终的RewriteRule行。

我需要主机,因此我可以使用相同的文件进行本地开发和实时部署。

非常感谢任何意见。

1 个答案:

答案 0 :(得分:0)

您可以使用此规则:

RewriteCond %{HTTPS} =off
RewriteRule ^help/returns https://%{HTTP_HOST}%{REQUEST_URI} [QSA,R=301,L]
  1. 此规则会将所有请求重定向到http://example.com/help/returns到安全(HTTPS)位置:https://example.com/help/returns - 它将保留完整的URL路径+查询字符串。你有太多的条件,规则变得复杂,当你的服务器真正繁忙时(正则表达式很昂贵)这不是一件好事。

  2. 我已将%{SERVER_PORT} 80替换为更合适的%{HTTPS} =off(如果您的网站在非默认端口(即80)上运行,这尤其有用。)

  3. 我还删除了HTTP_HOST匹配部分 - 除非您有多个域名/子域绑定到同一站点,否则您不需要它。如果您需要此条件,只需在第一行之后添加此行:RewriteCond %{HTTP_HOST} ^(mysite.localhost|mylivesite.com)