让 WordPress 使用独立的安装目录

许多人希望用 WordPress 驱动网站的根地址(例如 https://example.com),又不希望所有 WordPress 文件把根目录弄得杂乱。WordPress 允许你将它安装到子目录中,同时仍从网站根地址提供网站。

注意:本指南涵盖 Apache(.htaccess)、nginx(服务器块)和 IIS(web.config)的配置。

从 3.5 版开始,多站点用户可以使用下面列出的全部功能。如果你使用的 WordPress 版本低于 3.5,请先升级,再将 WordPress 多站点安装到子目录中。

主题及插件开发者请注意:这不会将你的代码与 WordPress 分离。主题和插件仍然位于 wp-content 文件夹中。

将根目录中的安装移到独立目录

假设你已将 WordPress 安装在 example.com。现在有两种不同的方法可以把 WordPress 安装移到子目录中:

  1. 不更改 SITE-URL(仍为 example.com)。
  2. 更改 SITE-URL(会重定向到 example.com/subdirectory)。

方法一:不更改 URL

  1. 在根文件夹中安装 WordPress 后,将根文件夹中的所有内容移到一个子目录中。

Apache(.htaccess)

  1. 在根文件夹中创建 .htaccess 文件,并将以下内容放入其中(只需更改 example.com 和 my_subdir):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/my_subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ my_subdir/index.php [L] 
</IfModule>

nginx(服务器块)

  1. 将以下内容加入 nginx 的服务器块:
location /my_subdir/ {
    try_files $uri $uri/ /my_subdir/index.php?$args;
}

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

这样就完成了 🙂

方法二:更改 URL

移动过程

(附注:如果你已经将 WP 安装在子目录中,其中一些步骤可能已经自动完成。)

  1. 为 WordPress 核心文件创建新的存放位置;以下示例使用 /wordpress。在 Linux 上,从 www 目录运行 mkdir wordpress。你可能还需要对新建的 wordpress 目录使用 chown apache:apache。
  2. 前往常规设置页面。
  3. 在 WordPress 地址(URL)中,设置主要 WordPress 核心文件的地址。例如:https://example.com/wordpress。
  4. 在站点地址(URL)中,设置根目录的 URL。例如:https://example.com。
  5. 点击保存更改。不用担心此时出现的错误!继续阅读。
  6. 现在将 WordPress 核心文件从根目录移到子目录中。
  7. 将 index.php 和 .htaccess 文件从 WordPress 目录复制(不是移动!)到网站根目录(博客地址)。.htaccess 文件是隐藏的,因此可能需要将 FTP 客户端设置为显示隐藏文件。如果你没有使用美化固定链接,可能没有 .htaccess 文件。如果你在 Windows(IIS)服务器上运行 WordPress,并使用美化固定链接,那么 WordPress 目录中会有 web.config,而不是 .htaccess。对 index.php 文件的操作仍然相同:将 index.php 文件复制(不要移动)到根目录。web.config 文件必须采用不同于 .htaccess 的处理方式:必须将 web.config 文件移动(不要复制)到根目录。
  8. 用文本编辑器打开根目录中的 index.php 文件。
  9. 修改以下内容并保存文件。将 require dirname( __FILE__ ) . '/wp-blog-header.php'; 这一行改为以下内容,其中使用存放 WordPress 核心文件的目录名称:require dirname( __FILE__ ) . '/wordpress/wp-blog-header.php';。
  10. 登录新位置。它现在可能是 https://example.com/wordpress/wp-admin/。
  11. 如果已经设置固定链接,请前往固定链接页面,更新固定链接结构。如果 .htaccess 文件具有适当的文件权限,WordPress 会自动更新它。如果 WordPress 无法写入 .htaccess 文件,它会显示新的重写规则;你应手动将这些规则复制到 .htaccess 文件中(它应与主要 index.php 文件位于同一目录)。

修改 .htaccess

有些情况下,人们希望在子目录(例如 /2010、/2011、/latest 等)中分别安装不同版本,并希望网站默认使用最新版本。此时,将 WordPress 安装在诸如 /my_subdir 的子目录中,然后在根文件夹的 .htaccess 文件中加入以下内容(根据需要更改相应文字):

Apache(.htaccess):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ my_subdir\[L\]

nginx(服务器块):

location = / {
    return 301 /my_subdir/;
}

location /my_subdir/ {
    try_files $uri $uri/ /my_subdir/index.php?$args;
}

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

现在,当用户访问根域名(example.com)时,会自动重定向到你指定的子目录。

注意:这段代码来自 Site 5 的文章:如何使用 .htaccess 将域名重定向到子文件夹。

移动特定的 WordPress 文件夹

以下链接说明如何更改 WordPress 中的特定目录:

另请参阅


原文:Giving WordPress Its Own Directory,作者:WordPress 文档贡献团队。原文仓库采用 GNU GPL 第 2 版。本中文翻译修改于 2026-10-03,按相同许可提供;代码保持原样。完整许可随离线文件中的 LICENSE 提供。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容