【问题标题】:htaccess: Redirect entire subfolder to roothtaccess:将整个子文件夹重定向到根目录
【发布时间】:2026-01-25 11:45:01
【问题描述】:

我的网站使用 Wordpress 作为 CMS,它已安装在子文件夹中,但我将其设置为在根域上显示。基本上,example.com 会显示 example.com/wordpress 的内容。

旧的(静态)网站也在一个子文件夹中,我需要将整个子文件夹(文件夹和所有内容)重定向回根目录 - 例如将 example.com/oldwebsite 指向 example.com

我尝试了很多不同的方法,但我无法让它发挥作用。

【问题讨论】:

    标签: wordpress .htaccess redirect subdirectory


    【解决方案1】:

    以下解决方案实施起来非常简单。你得到的是:

    备注

    • 如果您不使用永久链接,您可能不需要.htaccess 备注;我总是使用永久链接,我认为每个人都应该这样做,然后如果你不编辑 .htaccess,它可能不起作用(我不确定)
    • 如果您不知道自己在做什么,并且害怕搞砸,请在开始之前对 wordpress 文件夹进行 tar/zip 压缩
    • 您可能希望在开始之前使用插件 backwpup 创建数据库备份
    • 如果您可以选择服务器快照,请立即拍摄

    你需要什么来完成这个工作:

    • 如果您需要永久链接,请先使其正常工作;这会创建或需要一个 .htaccess 文件
    • 将 /wp/index.php 复制到 /index.php,然后复制到您网站的根目录
    • 如果您有 .htaccess,请将其复制到根目录
    • 如果您已经在根目录中有一个 .htaccess,您需要以某种方式将它们组合起来;我现在假设情况并非如此

    编辑/index.php

    • 添加或编辑以下行,这可能是该文件的最后一行
    • 你需要将你的wordpress安装的子目录添加到路径

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

    编辑 /.htaccess

    • 将以下代码添加到 .htaccess 的末尾或创建一个新的 .htaccess
    • 将 /wp/ 替换为您安装 wordpress 的目录的名称

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

    WordPress 设置

    重命名wordpress目录

    • 如果您重命名 wordpress 文件夹,请先在站点管理员中执行此操作
    • 这会更新数据库值
    • 更新后,管理员不再工作
    • 然后在终端或您的 ftp 客户端中重命名目录名称
    • 然后检查所有 .htaccess 和 index.php 文件的旧名称,并将旧名称替换为新名称

    【讨论】:

    • 感谢您的详尽回答。选择的答案过去对我有用,但在这种情况下,我需要手动完成,因为有问题的网站已经是另一个网站的子域,然后 Wordpress 安装在子文件夹中。帮助改变 index.php 文件从 require( dirname( FILE ) . '/wp-blog-header.php' );要求('./wp/wp-blog-header.php');再次感谢!
    • 感谢 SPRBRN,这很好用。我对 htaccess 文件了解不多,所以如果它没有意义,请原谅我的问题,但是这个解决方案对于谷歌等易于搜索的网站来说是否很好,还有其他什么应该添加来改进网站安全。我真的不明白 htaccess 代码实际上在做什么,我所知道的只是到目前为止我发现的解决方案只是导致重定向循环,现在子目录中的 wp 可以工作。
    • .htaccess 用于更改网络服务器 Apache 的设置。在 Wordpress 中使用它并使用永久链接设置时,URL 会提供更多信息,从而提高 Google 排名。见codex.wordpress.org/Using_Permalinksen.wikipedia.org/wiki/Htaccess
    • 对我来说根本不起作用。地址仍然是 example.com/subfolder,它现在显示了里面的所有文件和文件夹(非常不安全)
    • 那么我很确定你以某种方式犯了错误。安装一个新的测试站点,然后重试。如果需要,在您的本地机器或虚拟机上测试它。并先解决安全问题。
    【解决方案2】:

    这是我最近从子目录 (/wordpress) 移动到根目录 (/) 的案例研究。

    您可以通过阅读本文或更好的方式获得一些有趣的提示,以象征性的成本将搬迁分配给我们,让您自己省去所有的麻烦:)

    第 1 步: 该站点位于 Cpanel 上,因此我对该站点进行了完整备份,以避免在出现问题时发生重大灾难(您知道墨菲定律,不要你?)。

    第 2 步:我将当前的博客(位于 /wordpress)升级到最新版本,以便数据库结构是最新的。

    第 3 步:我将根目录中的所有文件下载到本地文件夹,以便在需要时替换覆盖的文件。

    第 4 步:然后我将博客软件的完整副本上传到根目录(public_html 文件夹,因为这是一个 cpanel 站点)。如果使用了特殊的插件,您应该从之前的位置下载软件,然后将其上传到新的位置,这样插件文件也会被上传。

    第 5 步:我将 wp-config.php 文件上传到根目录,以便 Wordpress 引用同一个数据库。

    第六步:我通过PHPmyadmin访问了数据库,打开了wp_options表。通过替换 http://www.domain.com/wordpress 将 site_url 和 home 选项的值更新为 http://www.domain.com

    第 7 步: 现在我通过根 URL 访问了该博客,它可以正常打开。但是我注意到这些帖子仍然链接到 www.domain.com/wordpress/postname/id。

    第 8 步:我访问了管理控制台并重新创建了永久链接以更新所有帖子 URL。

    现在整个博客运行良好,没有任何问题。

    最后,我需要确保 Google 和其他搜索引擎将旧的索引 /wordpress/post URL 重定向到新的。为此,我编辑了根目录下的 .htaccess 文件。

    在 # BEGIN WORDPRESS 部分之前插入以下代码(如果您不将此代码保留在 WORDPRESS 部分之外,Wordpress 将在您更新永久链接或执行任何其他适用于 .htaccess 文件的操作时将其删除)。

    重写引擎开启 RewriteBase / 重写 ^wordpress(/.*)? $1 [L,R=301]

    这有效地为所有具有 /wordpress/something 名称的文件创建了一个永久重定向到 /something 名称。

    【讨论】: