首页 > 解决方案 > 子域的不完整 htaccess

问题描述

我不确定它是否可以完成,我看起来高低。我可能只是没有正确构建搜索查询来产生我需要的结果。

我在主机上有 2 个具有不同内容的域(一个添加到另一个上)。当我添加第二个域时,所有这 3 个场景都将解决:

(1) domain2.domain1.com
(2) domain1.com/domain2/
(3) www.domain2.domain1.com
(4) www.domain1.com/domain2/
(5) domain2.com

我只想显示https://domain1.comhttps://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]

任何帮助将不胜感激。

标签: .htaccess

解决方案


您需要为此创建四个虚拟主机< VirtualHost >

对于domain1.com,您需要创建一个将http 重定向到 https的虚拟主机和另一个负责https 连接的虚拟主机。同样对于domain2.com

ServerNameServerAlias指令将帮助您解决问题(基于名称的虚拟主机)。

更多内容可以在链接中阅读

现在您的文件将包含以下规则

<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。

在这条规则之后

  1. www.domain1.com 将重定向到https://domain1.com
  2. domain1.com 将重定向到https://domain1.com
  3. www.domain2.com 将重定向到https://domain2.com
  4. domain2.com 将重定向到https://domain2.com
  5. https://domain1.com/domain2将重定向到https://domain2.com
  6. https://domain2.com/domain1将重定向到https://domain1.com
  7. https://www.domain1.com/domain2将重定向到https://domain2.com
  8. https://www.domain2.com/domain1将重定向到https://domain1.com

推荐阅读