【发布时间】:2018-03-08 09:33:19
【问题描述】:
我正在将博客从 blog.foo.com 重定向到 foo.com(根域)上的新 wordpress 安装。
我已采取以下设置步骤:
- 在 foo.com/new-wp 安装了第二个新的 wordpress 实例
- 将 index.php 和 .htaccess 文件从 foo.com/new-wp 移至根 foo.com
-
将根 index.php 更新为:
require( dirname( __FILE__ ) . '/new-wp/wp-blog-header.php' ); 将
WordPress Address (URL)字段设置为https://foo.com/new-wp- 将
Site Address (URL)设置为https://foo.com -
用
更新了 foo.com/new-wp wp-config.phpif ( !defined('ABSPATH') )define('ABSPATH', dirname(__FILE__) . '/wp-new'); 在 blog.foo.com 保留现有的 wordpress 安装
- 将 foo.com 上新博客的路径设置为 foo.com/blog
- 为每个 blog.foo.com url 设置 301 重定向,例如 blog.foo.com/article 被重定向到 foo.com/article
根域 (foo.com) 和所有重定向的 url 都按预期工作。
但是,foo.com/blog 应该是根目录下的博客主页子文件夹,在访问时不会显示任何静态文件,因为它请求 blog.foo.com 并包含:
<link rel="canonical" href="https://blog.foo.com/" />
<link rel='dns-prefetch' href='//blog.foo.com' />
<link rel="pingback" href="https://blog.foo.com/xmlrpc.php">
etc.
为什么 foo.com/blog 请求 blog.foo.com?这是一个完全独立的 wordpress 安装,在 foo.com、foo.com/wp-new 或 foo.com/blog 上没有任何内容指向它。
root foo.com htaccess:
rewriteengine on
rewritecond %{HTTPS} off
rewritecond %{HTTP_HOST} ^www.foo.com$ [OR]
rewritecond %{HTTP_HOST} ^foo.com$
rewriterule ^(.*)$ "https\:\/\/foo\.com\/$1" [R=301,L] #59ca6fd8c3abd
# 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
rewriterule ^index\.php$ - [L]
rewritecond %{REQUEST_FILENAME} !-f
rewritecond %{REQUEST_FILENAME} !-d
rewriterule . /index.php [L]
在 foo.com 的数据库中,我搜索了“%blog.foo.com%”并在 wp_options 表中看到了这个参考。我尝试将 'blog.foo.com' 替换为 'foo.com' 但对我的问题没有任何影响。
SELECT *
FROM `dbname`.`wp_options`
WHERE (
`option_id` LIKE '%"%blog.foo.com%"%'
OR `option_name` LIKE CONVERT( _utf8 '%"%blog.foo.com%"%'
USING utf8mb4 )
COLLATE utf8mb4_unicode_ci
OR `option_value` LIKE CONVERT( _utf8 '%"%blog.foo.com%"%'
USING utf8mb4 )
COLLATE utf8mb4_unicode_ci
OR `autoload` LIKE CONVERT( _utf8 '%"%blog.foo.com%"%'
USING utf8mb4 )
COLLATE utf8mb4_unicode_ci
)
LIMIT 0 , 30
【问题讨论】:
-
仅供参考,要添加代码块,您不需要用反引号包围每一行...只需将每行缩进 4 个空格,或使用工具栏中的
{}选项 :) -
我对你的新安装有点困惑 - 所以,它安装在一个名为“wp-new”的文件夹中并从根 foo.com 运行,那么 foo.com/blog 是如何来的进去?另外,您是否将 blog.foo.com 数据库中的内容和主题文件复制到了新安装中?如果是这样,您是否替换了数据库中对 blog.foo.com 的所有引用?并检查以防万一您的主题文件中有任何硬编码链接?
-
对于新的 /wp-new 安装,我创建了一个单独的新数据库,从 blog.foo.com 导出帖子并使用 wp 导入工具导入新帖子。我在 /wp-new 上安装了一个新主题,与 blog.foo.com 不同。我不希望 foo.com 数据库中有任何对 blog.foo.com 的引用,因为它是一个不同的数据库。 foo.com/blog 是 foo.com 上博客索引页面的 url 路由,它显示安装在 /wp-new 中的新主题中的所有博客文章
-
在这种情况下,它听起来唯一可以来自的地方就是数据库,虽然我不知道为什么如果你只使用导入工具导入帖子。我建议在您的新数据库中对 '%blog.foo.com%' 进行全面搜索 - 您可以通过 MyPHPAdmin 进行此操作
-
搜索了 foo.com 数据库。我看到的对 blog.foo 的引用是:1. 在 wp_posts 表中,列 guid 包括用于导入帖子的 blog.foo 和 2. wp_options 中有一个引用(包括在上面)
标签: php wordpress .htaccess path