首页 > 解决方案 > 将所有子域 URL 重定向到匹配的主域 URL - 重定向页面路径不起作用

问题描述

使用 Ubuntu 16.04 和 Apache 虚拟主机。

我有一个 Wordpress 网站:www.example.com

其他网站通常链接到 URL,例如:

我想将它们重定向到:

我努力了:

RewriteCond %{HTTP_HOST} ^sub1.example.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^sub1\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

使用这两种配置,我得到以下行为:

我的 DNS 设置涉及指向服务器 IP 的 A 记录,例如 example.com、www、sub1 等。

我的虚拟主机 .conf 文件如下所示:

<VirtualHost *:80>
        ServerAdmin webmaster@example.com
        DocumentRoot /var/www/example.com/public_html
    ServerName example.com
    ServerAlias www.example.com

        <Directory /var/www/example.com/public_html/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <IfModule mod_dir.c>
            DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
        </IfModule>

</VirtualHost>

我尝试将 sub1.example.com 添加为 ServerAlias 并重新加载 Apache 无济于事。

我该如何解决这个问题?

标签: apache.htaccessredirectvirtualhost

解决方案


我通过为每个子域创建单独的虚拟主机来解决这个问题,每个子域都有自己的文件结构和 .htaccess 文件。


推荐阅读