子域名的新 VirtualHost 不需要 301 重定向

子域名的新 VirtualHost 不需要 301 重定向

在过去的 3 年里,我的 Wordpress 网站有 2 个副本。一个在 www.domain.com,一个在 dev.domain.com。我今天想添加第三个。看起来很简单!我完成了所有简单的设置步骤,一旦启用网站,它就会 301 引导我到 www 网站。我不知道如何排除触发 301 的原因。是在 Apache 还是 Wordpress 中?我只知道我正在复制 dev 网站的所有配置,并在适用的情况下更改子域和目录名称。似乎这应该足够了。我的步骤:

  1. 在浏览器中打开 dev2.domain.com 并查看默认的 Apache2 页面
  2. 复制 /dev.domain.com 的源文件夹 -> /dev2.domain.com
  3. 复制 /etc/apache2/sites-available/dev.domain.com.conf -> dev2.domain.com.conf
  4. 执行:sudo a2ensite dev2.domain.com.conf
  5. 执行:sudo service apache2 reload (和/或重新启动 - 我都试过了)
  6. 打开 dev2.domain.com 并获得 301 重定向到 www.domain.com

有没有办法确切地找出导致 301 的原因?最令人困惑的是,我通过复制在子域上运行的现有网站在子域上建立了这个新网站。我就是搞不清楚这两者之间有什么区别。

必需的配置信息...

所有 3 个站点 (www、dev 和 dev2) 的根目录中都有相同的 .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
Options +Indexes
IndexOptions -FancyIndexing

dev.domain.com 的站点可用配置...

<VirtualHost *:80>
    ServerName dev.domain.com
    ServerAdmin [email protected]

    DocumentRoot /srv/dev.domain.com

    <Directory />
        Options All
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /srv/dev.domain.com/logs/error.log
    CustomLog /srv/dev.domain.com/logs/access.log combined
</VirtualHost>

dev2.domain.com 的站点可用配置...

<VirtualHost *:80>
    ServerName dev2.domain.com
    ServerAdmin [email protected]

    DocumentRoot /srv/dev2.domain.com

    <Directory />
        Options All
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /srv/dev2.domain.com/logs/error.log
    CustomLog /srv/dev2.domain.com/logs/access.log combined
</VirtualHost>

AWS Route53 中的 DNS 配置...

domain.com       A  12.34.567.89
dev.domain.com   A  12.34.567.89
dev2.domain.com  A  12.34.567.89
www.domain.com   CNAME  domain.com

我想,我最纠结的是以下两件事:

  1. dev 和 dev2 之间的 apache 配置似乎除了在适用的情况下将“dev”更改为“dev2”外,其他均相同

  2. 当网站在 Apache 中被禁用时,它不会被重定向。只有当网站启用后才会发生重定向。这是否意味着它是 Wordpress?

答案1

您的 Apache 设置都是准确的;您的问题很可能是由于域保存在 Wordpress 数据库中造成的。默认情况下,Wordpress 将主页和站点 URL 的基本 URL 存储在 wp_options 表中。此外,它还将完全限定域存储在 wp_posts 表中的所有单个帖子/页面 GUID 中。

查找和替换域的选项:

  • 最快:导出 mysql 数据库,在文本编辑器中打开 mysql 数据库转储并执行全局查找(针对 domain.com 或 dev.domain.com)并替换为(dev2.domain.com),重新导入。
  • 使用 SQL 查询执行查找并用新子域替换旧域的所有实例。

有关将 Wordpress 网站从一个域迁移到另一个域的更多背景信息,请参阅移动 Wordpress Codex 页面

相关内容