许多人希望用 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 安装移到子目录中:
- 不更改 SITE-URL(仍为
example.com)。 - 更改 SITE-URL(会重定向到
example.com/subdirectory)。
方法一:不更改 URL
- 在根文件夹中安装 WordPress 后,将根文件夹中的所有内容移到一个子目录中。
Apache(.htaccess)
- 在根文件夹中创建
.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(服务器块)
- 将以下内容加入 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 安装在子目录中,其中一些步骤可能已经自动完成。)
- 为 WordPress 核心文件创建新的存放位置;以下示例使用
/wordpress。在 Linux 上,从www目录运行mkdir wordpress。你可能还需要对新建的wordpress目录使用chown apache:apache。 - 前往常规设置页面。
- 在 WordPress 地址(URL)中,设置主要 WordPress 核心文件的地址。例如:
https://example.com/wordpress。 - 在站点地址(URL)中,设置根目录的 URL。例如:
https://example.com。 - 点击保存更改。不用担心此时出现的错误!继续阅读。
- 现在将 WordPress 核心文件从根目录移到子目录中。
- 将
index.php和.htaccess文件从 WordPress 目录复制(不是移动!)到网站根目录(博客地址)。.htaccess文件是隐藏的,因此可能需要将 FTP 客户端设置为显示隐藏文件。如果你没有使用美化固定链接,可能没有 .htaccess文件。如果你在 Windows(IIS)服务器上运行 WordPress,并使用美化固定链接,那么 WordPress 目录中会有web.config,而不是.htaccess。对index.php文件的操作仍然相同:将 index.php 文件复制(不要移动)到根目录。web.config文件必须采用不同于.htaccess的处理方式:必须将web.config文件移动(不要复制)到根目录。 - 用文本编辑器打开根目录中的
index.php文件。 - 修改以下内容并保存文件。将
require dirname( __FILE__ ) . '/wp-blog-header.php';这一行改为以下内容,其中使用存放 WordPress 核心文件的目录名称:require dirname( __FILE__ ) . '/wordpress/wp-blog-header.php';。 - 登录新位置。它现在可能是
https://example.com/wordpress/wp-admin/。 - 如果已经设置固定链接,请前往固定链接页面,更新固定链接结构。如果
.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 提供。











暂无评论内容