我有两种主要类型的域指向我的Web服务器。主要流量(example.com)我想直接到https,但其余的流量(即profile1.net,profile2.net等)我想留下作为http。 出于这个原因,我无法使用全能SSL重定向类型的规则。此外,我有更多规则可以重定向配置文件名称和隐藏扩展等等,所以我不能使用L RewriteRule之后的指令
我还希望将所有主要流量都包含在子域名www。
中 我似乎无法将这两个部分放在一起,系统似乎忽略了其中一个条件。请查看:Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^/?$ "https://www.example.com/$1" [R=301]
结果:测试案例3& 4工作。测试用例1& 2显示为http://
如果我评论出www。在有条件的行中,example.com可以完美地运行:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
#RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^/?$ "https://www.example.com/$1" [R=301]
结果:测试案例1,3和& 4工作。测试用例2显示为http://
测试用例:
*这些测试用例不适用于此示例,但在整体*
中执行答案 0 :(得分:1)
以下是针对所有4种情况的单个301重定向规则:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]