RewriteCond %{HTTP_HOST} ^(.*\.)*subexample.example.com$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://subexample.example.com/$1 [R]
我一直在使用这种方法。只要我转到特定页面,例如 subexample.example.com/orders.php,这种方法就有效。但是,如果您尝试转到子域的根目录,它会在末尾添加额外的“/example”。
对于一套可行的规则有什么建议吗?
非常感谢您的回复!
实际上,这就是我想做的事情:
http://support.mydomain.net >> https://support.mydomain.net
和(!)
http://support.mydomain.net/anypage* >> https://support.mydomain.net/anypage*
> RewriteCond %{HTTPS} off RewriteRule (.*)
> https://%{HTTP_HOST}%{REQUEST_URI}
可以,但我只需要为 support.mydomain.net 执行此操作
通过上述设置,如果您尝试访问 mydomain.net,您会收到证书警告,而我没有或不需要安装 SSL 证书。
更新!
我上面写的规则的另一个问题是,如果你尝试转到子域名的根目录(即 support.mydomain.net),它会转到https://support.mydomain.net/support
这让我抓狂了,救命!=)
任何帮助将不胜感激!
答案1
根据您的代码,我假设您想要执行以下重定向:
http://aaa.subexample.example.com -> https://subexample.example.com/aaa
http://subexample.example.com -> https://subexample.example.com/
而后者则不起作用。
我会用两个不同的 RewriteRule 片段来重写。
RewriteCond %{HTTP_HOST} ^subexample.example.com$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://subexample.example.com/$1 [L]
RewriteCond %{HTTP_HOST} ^(.+\.)+subexample.example.com$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://subexample.example.com/$1 [R]