尝试将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行。
我需要主机,因此我可以使用相同的文件进行本地开发和实时部署。
非常感谢任何意见。
答案 0 :(得分:0)
您可以使用此规则:
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路径+查询字符串。你有太多的条件,规则变得复杂,当你的服务器真正繁忙时(正则表达式很昂贵)这不是一件好事。
我已将%{SERVER_PORT} 80
替换为更合适的%{HTTPS} =off
(如果您的网站在非默认端口(即80)上运行,这尤其有用。)
我还删除了HTTP_HOST匹配部分 - 除非您有多个域名/子域绑定到同一站点,否则您不需要它。如果您需要此条件,只需在第一行之后添加此行:RewriteCond %{HTTP_HOST} ^(mysite.localhost|mylivesite.com)