![仅将一个网站重定向到 https](https://linux22.com/image/640037/%E4%BB%85%E5%B0%86%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20https%20.png)
我有一个带有多个域名的服务器。我只想将一个“site-internet.com”重定向到 ssl 配置。
我想做:
- www.site-internet.com =>https://www.site-internet.com
- site-internet.com =>https://www.site-internet.com
- test.site-internet.com =>http://test.site-internet.com
这是我的 apache 配置文件
NameVirtualHost *:80
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test.site-internet\.com$[NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ http://test.site-internet.com/$1 [NC,R=301,L]
RewriteCond %{HTTP_HOST} ^(.*)\.site-internet\.com$
RewriteCond %{HTTP_HOST} ^site-internet\.com$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301]
</VirtualHost>
但这不起作用。我应该纠正什么?
答案1
因此,当您输入 2 个 RewriteCond 时,它们是“AND”关系,这意味着它们都需要为真才能应用 RewriteRule。您需要使用 [OR] 来克服这个问题。另外,我不明白为什么您需要“不重定向”的代码。
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site-internet\.com$ [OR]
RewriteCond %{HTTP_HOST} ^site-internet\.com$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301]
</VirtualHost>