一个 IP 上的多个域和子域 Apache2

一个 IP 上的多个域和子域 Apache2

我在一个 IP 上有两个虚拟主机,www.example.com 和 www.example2.com。默认的 example.com 有一个子域名 docs.example.com,运行良好,并且它还有一个 SSL 证书,并且在 example.com 上强制使用 https。

当我尝试在第二个域名(即 blog.example2.com (wordpress))上设置子域名时,它会重定向回第一个域名,https://www.example.com。但是 www.example2.com 运行良好。

一个 IP 上可以有两个网站的子域名吗?或者只能为默认网站设置子域名吗?有没有办法让 example2 上的子域名正常工作?

配置文件:

000-默认.conf

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

例如.com.conf

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    ...
    DocumentRoot /var/www/example.com/public_html
</VirtualHost>
<IfModule mod_ssl.c>
    ... certificates set up etc.
</IfModule>

docs.example.com.conf

<VirtualHost *:80>
    ServerName docs.example.com
    ...
    DocumentRoot /var/www/docs.example.com/public_html
</VirtualHost>

example2.com.conf

<VirtualHost *:80>
    ServerName www.example2.com
    ServerAlias example2.com
    ...
    DocumentRoot /var/www/example2.com/public_html
</VirtualHost>

博客.example2.com.conf

<VirtualHost *:80>
    ServerName blog.example2.com <-- redirects back to https://www.example.com
    ...
    DocumentRoot /var/www/blog.example2.com/public_html
</VirtualHost>

答案1

回答您当前的问题:

  1. 一个 IP 上可以有两个网站的子域名吗?还是只能为默认网站设置子域名?

是的,一个 IP 上可以有多个子域和顶级域。如发布的那样,您的虚拟主机配置正确。

  1. 有什么方法可以让 example2 上的子域名正常工作吗?

我怀疑重定向的发生是因为 apache 没有看到/加载 blog.example2.com vhost 文件或 Wordpress 配置问题:

  • Apache 将跳过加载任何无效的 vhost 文件,并返回到 000-default.conf 中定义的域。如果您使用的是 Apache2,则可能需要检查 /etc/apache2/sites-enabled 文件夹以确保 blog.example2.com.conf 已启用并正在加载。此外,如果您修改或添加了 vhost 文件,请不要忘记重新启动 Apache。

  • Wordpress 站点的初始设置反映了“example.com”的域名。Wordpress 将其 GUID 的绝对 URL 保存在 wp_posts 表中,并将站点的域名 (url) 和主页 URL 保存在其数据库的 wp_options 表中。您可能需要执行查找和替换来更新数据库中的域名。这可以直接通过 SQL 查询或使用 WP-CLI 工具完成。这两种方法都在https://wordpress.stackexchange.com/questions/7693/what-sql-query-to-do-a-simple-find-and-replace

  • 有时,开发人员可能会覆盖并设置 wp-config.php 中的顶级域名(站点 URL)和主页 URL。这两个设置类似于:

    定义('WP_HOME','http://www.example.com');定义('WP_SITEURL','http://www.example.com');

  • Wordpress 网站的 .htaccess 文件有一个指向 www.example.com 的重定向规则

最后要注意的是,请确保 Wordpress 网站/子域的虚拟主机允许 .htaccess。应该有一个类似于以下内容的块:

<Directory "/var/www/blog.example2.com/public_html">
    Options FollowSymLinks
    AllowOverride All

    Order allow,deny
    Allow from all
</Directory>

相关内容