You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改WordPress子目录站点URL结构,去除/blog前缀以适配SEO

WordPress子目录安装实现根目录URL结构方案

核心思路

WordPress实际安装在domain.com/blog,通过站点地址配置+服务器重写规则,让前台URL直接显示为domain.com/category-name/post-name,同时不干扰主站(其他平台)的正常运行。

具体操作步骤

1. 调整WordPress后台基础设置

  • 登录WP后台,进入设置 → 常规:
    • 保留**WordPress地址(URL)**为 domain.com/blog(程序实际存放路径,不可修改,否则会和主站冲突)
    • 将**站点地址(URL)**修改为 domain.com(前台对外展示的域名)
  • 进入设置 → 固定链接,选择「自定义结构」,输入:/category/%category%/%postname%/(开头的斜杠是关键,确保生成的URL不带/blog前缀)

2. 修改根目录的.htaccess规则

主站根目录的.htaccess需要添加转发规则,把指向分类/文章的请求转交给/blog目录的WordPress处理,同时避免影响主站已有页面:

打开根目录的.htaccess,将以下代码放在主站现有规则的最上方:

RewriteEngine On
RewriteBase /

# 排除主站已存在的文件和目录,防止冲突
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 转发文章URL(category-name/post-name)到/blog目录
RewriteRule ^([^/]+)/([^/]+)/?$ /blog/$1/$2/ [L]

# 转发分类归档页面URL(category-name)到/blog目录
RewriteRule ^([^/]+)/?$ /blog/$1/ [L]

3. 确认WordPress目录的.htaccess配置

打开/blog目录下的.htaccess,确保其规则的RewriteBase指向正确路径:

RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

4. 验证与缓存清理

  • 访问任意已发布文章,检查URL是否为domain.com/category-name/post-name且页面正常加载
  • 清理WordPress缓存(若使用缓存插件)和浏览器缓存,避免旧URL缓存干扰
  • 测试主站所有核心页面,确认重写规则未影响主站功能

关键注意事项

  • 若服务器是Nginx而非Apache,需要将上述.htaccess规则转换为Nginx的rewrite规则,比如在主站配置文件中添加:
    location / {
        try_files $uri $uri/ @wordpress;
    }
    
    location @wordpress {
        rewrite ^/([^/]+)/([^/]+)/?$ /blog/$1/$2/ last;
        rewrite ^/([^/]+)/?$ /blog/$1/ last;
    }
    
  • 如果存在自定义分类、自定义文章类型或多层级分类,需要调整重写规则以适配更多URL结构
  • 确保服务器已开启URL重写功能(Apache的mod_rewrite模块、Nginx的rewrite模块)

内容的提问来源于stack exchange,提问作者Gopal Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:30:51