.htaccess HTTPS重定向,同时保持URL简短形式

时间:2011-01-26 19:53:14

标签: .htaccess

好的,我的.htaccess中有这个重写规则:

RewriteRule ^settings https://%{HTTP_HOST}/user_settings.php

这会将“http://domain.com/settings”重定向到“https://domain.com/user_settings.php”。

如何制作以便将“http://domain.com/settings”重定向到“https://domain.com/settings”?这意味着,如何将网址从HTTP重定向到HTTPS,同时仍然将重定向短网址保留在.htcaccess中?

谢谢!

1 个答案:

答案 0 :(得分:1)

编辑:澄清问题后更新答案。

您可以这样做:

RewriteCond %{HTTPS} !=on
RewriteRule ^settings(/?)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,NC]
RewriteCond %{HTTPS} =on
RewriteRule ^settings(/?)$ /user_settings.php [L,NC]

第一个RewriteCond会检查HTTPS是否已关闭,只有符合条件的RewriteRule才会发生。

第一个RewriteRule将匹配以下任一项:

  • http://domain.com/settings
  • http://domain.com/settings/

(/?)允许尾随斜杠是可选的。 R中的[R,NC]强制将其作为重定向,NC表示它不区分大小写。

第二个RewriteCond将再次检查HTTPS,但这次是为了确保它已开启。

如果启用了HTTPS,并且您在目录中(意味着第一次重写成功),则会重写为user_settings.phpL中的[L,NC]表示如果匹配此规则,那么它应该是最后一个RewriteRule