【问题标题】:Wordpress subdirectory blog pointing to separate subdomain install指向单独子域安装的 Wordpress 子目录博客
【发布时间】:2018-03-08 09:33:19
【问题描述】:

我正在将博客从 blog.foo.com 重定向到 foo.com(根域)上的新 wordpress 安装。

我已采取以下设置步骤:

  1. 在 foo.com/new-wp 安装了第二个新的 wordpress 实例
  2. 将 index.php 和 .htaccess 文件从 foo.com/new-wp 移至根 foo.com
  3. 将根 index.php 更新为:

    require( dirname( __FILE__ ) . '/new-wp/wp-blog-header.php' );

  4. WordPress Address (URL)字段设置为https://foo.com/new-wp

  5. Site Address (URL) 设置为https://foo.com
  6. 更新了 foo.com/new-wp wp-config.php

    if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/wp-new');

  7. 在 blog.foo.com 保留现有的 wordpress 安装

  8. 将 foo.com 上新博客的路径设置为 foo.com/blog
  9. 为每个 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


【解决方案1】:

我仍然对为什么 foo.com/blog 请求 blog.foo.com 的技术解释感兴趣,尽管它是单独的站点和数据库,但是,通过将 URL 更改为 foo.com/something-other-than-just-blog 它现在请求和以正确的foo.com URL 响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2015-12-04
    • 1970-01-01
    • 2013-12-05
    • 2013-07-14
    相关资源
    最近更新 更多