如果用户打开
,我想重定向 1 http://example.com
至https://www.example.com
2 http://www.example.com
至https://www.example.com
3 http://example.com/user/(anystring)
至https://www.example.com/user/(anystring)
4 http://www.example.com/user/(anystring)
至https://www.example.com/user/(anystring)
我已尝试过此htaccess
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.com\/user\/*$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com\/user\/*$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/user\/$1" [R=301,L]
第3个和第4个无法正常工作,(anystring)
无法访问,我将设置COOKIE
,但重定向后无效。
答案 0 :(得分:0)
我认为您可以将此简化为单一规则:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^/?(.*)$ https://www.example.com/$1 [R=301,L,QSA]
实际上只有在您有不想要重写的同一规则集中的其他虚拟主机时才需要测试主机名。
一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用.htaccess
样式文件。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。