我不确定是否可以做到,而且我看上去高低不平。可能是我没有正确构建搜索查询才能获得所需的结果。
我在一个主机上有2个具有不同内容的域(一个添加到另一个)。当我添加第二个域时,所有这三种情况都将解决:
(1)domain2.domain1.com
(2)domain1.com/domain2/
(3)www.domain2.domain1.com
(4)www.domain1.com/domain2/
(5)domain2.com
我只想显示https://domain1.com或https://domain2.com的内容-但是- https://domain1.com/domain2/和https://www.domain1.com/domain2/应该解析为https://domain2.com
.htaccess的以下更改解决了方案(1)和(3),但我不知道如何处理方案(2)和(4):
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain2.domain1.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain2.domain1.com [NC]
RewriteRule ^(.*)$ https://domain2.com/$1 [L,R=301,NC]
任何帮助将不胜感激。
答案 0 :(得分:0)
您需要为其创建四个虚拟主机,
对于 domain1.com ,您需要创建一个虚拟主机,该主机将 http重定向到https ,并创建另一个虚拟主机,该主机将负责 https连接强>。 对于 domain2.com
ServerName 和 ServerAlias 指令将帮助您解决问题(基于名称的虚拟主机)。
可以在link上阅读更多内容
现在您的文件将包含以下规则
<VirtualHost 192.168.23.34:80>
ServerName domain1.com
ServerAlias www.domain1.com
Redirect permanent / https://domain1.com/
</VirtualHost>
<VirtualHost 192.168.23.34:80>
ServerName domain2.com
ServerAlias www.domain2.com
Redirect permanent / https://domain2.com/
</VirtualHost>
<VirtualHost 192.168.23.34:443>
ServerName domain1.com
ServerAlias www.domain1.com
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/domain2
RewriteRule (.*) https://domain2.com/ [L,R=301,NC]
// ssl certificate setting for the same
</VirtualHost>
<VirtualHost 192.168.23.34:443>
ServerName domain2.com
ServerAlias www.domain2.com
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/domain1
RewriteRule (.*) https://domain1.com/ [L,R=301,NC]
// ssl certificate setting for the same
</VirtualHost>
请确保重新启动apache。
遵循此规则