Mod rewrite mod_重写安全重定向
试图将非安全页面重定向到安全页面时,mod_rewrite遇到了麻烦。这项工作:Mod rewrite mod_重写安全重定向,mod-rewrite,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|
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]
它试图给我的URL是
我似乎无法使HTTP:host进入最终的重写规则行
我需要在那里的主机,以便我可以使用本地开发和实时部署相同的文件
非常感谢您的任何意见。您可以使用以下规则:
RewriteCond %{HTTPS} =off
RewriteRule ^help/returns https://%{HTTP_HOST}%{REQUEST_URI} [QSA,R=301,L]
http://example.com/help/returns
到安全(HTTPS)位置:https://example.com/help/returns
——它将保留完整的URL路径+查询字符串。您有太多的条件,规则变得复杂,当您的服务器非常繁忙时(正则表达式非常昂贵),这不是一件好事%{HTTPS}=off
替换了%{SERVER\u PORT}80
(如果您的站点在非默认端口80上运行,这尤其有用)RewriteCond%{HTTP_HOST}^(mysite.localhost | mylivesite.com)
非常感谢懒人。我没有意识到将HTTP_主机放在最终“目的地”是可能的(我使用端口80而不是HTTPS=off,因为我有一个SSL卸载负载平衡器,它不使用443进行安全页面-它使用8080)@Geoff在你将我的答案标记为接受之前,请确保规则对你适用(我确信我的规则是正确的——我已经测试过了,但您的设置可能略有不同,可能需要稍微调整一下,但可能性非常小)。