在过去的 3 年里,我的 Wordpress 网站有 2 个副本。一个在 www.domain.com,一个在 dev.domain.com。我今天想添加第三个。看起来很简单!我完成了所有简单的设置步骤,一旦启用网站,它就会 301 引导我到 www 网站。我不知道如何排除触发 301 的原因。是在 Apache 还是 Wordpress 中?我只知道我正在复制 dev 网站的所有配置,并在适用的情况下更改子域和目录名称。似乎这应该足够了。我的步骤:
- 在浏览器中打开 dev2.domain.com 并查看默认的 Apache2 页面
- 复制 /dev.domain.com 的源文件夹 -> /dev2.domain.com
- 复制 /etc/apache2/sites-available/dev.domain.com.conf -> dev2.domain.com.conf
- 执行:sudo a2ensite dev2.domain.com.conf
- 执行:sudo service apache2 reload (和/或重新启动 - 我都试过了)
- 打开 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
我想,我最纠结的是以下两件事:
dev 和 dev2 之间的 apache 配置似乎除了在适用的情况下将“dev”更改为“dev2”外,其他均相同
当网站在 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 页面