我可以在Apache服务器上的mod_rewrite
文件中使用.htaccess
。我想要这样的事情:
RewriteEngine On
RewriteCond %{HTTPS} !on [NC,OR]
RewriteCond %{HTTP_HOST} !^example\.com
RewriteCond %{HTTP_HOST} !^sub\.example\.com
RewriteRule ^/?(.*)$ https://example.com/$1
虽然意味着"如果http
或请求子域名不是sub.
(例如www.
),则重定向到https
而不是www.
}"
https://example.com
- >什么都不做http://example.com
- > https://example.com
https://www.example.com
- > https://example.com
http://www.example.com
- > https://example.com
https://sub.example.com
- >什么都不做http://sub.example.com
- > https://sub.example.com
,这绝对不适用于上面的代码
最简单的方法是什么?提前致谢!答案 0 :(得分:1)
您需要将其分为两个不同的规则:
RewriteEngine On
# remove www and https for https://www.example.com or http://www.example.com
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=302]
# simply add https for rest
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302]
302
更改为301
。