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

基于单词取反的.htaccess URL重写规则问题求助

解决WordPress路径重定向:禁用/wp-blog访问并保留/wp-admin权限

我来帮你搞定这个.htaccess重定向的问题!你的需求很清晰:把访问/wp-blog下除了wp-admin后台的所有请求,都永久重定向到前端展示的/blog路径,同时确保后台能正常访问。

你原来规则的问题

你之前写的规则有两个关键问题:

  1. RewriteCond的写法不正确——它默认需要匹配RewriteRule的测试字符串,或者明确指定要匹配的服务器变量(比如%{REQUEST_URI}),直接写^wp-blog/((?!wp-admin).)*$无法正确捕获请求路径。
  2. 规则的匹配范围和捕获逻辑没有对齐,导致重定向的目标路径可能出现错误。

正确的.htaccess规则

把下面的规则添加到你的.htaccess文件最顶部(一定要放在WordPress自动生成的# BEGIN WordPress注释块之前,避免被WordPress的内部路由规则覆盖):

# 开启重写引擎(如果文件里已经有这行可以省略)
RewriteEngine On

# 匹配/wp-blog下非wp-admin的所有请求
RewriteCond %{REQUEST_URI} ^/wp-blog/(?!wp-admin)(.*)$ [NC]
# 重定向到/blog对应的路径
RewriteRule ^wp-blog/(.*)$ /blog/$1 [R=301,L]

规则详解

  • RewriteCond %{REQUEST_URI} ^/wp-blog/(?!wp-admin)(.*)$ [NC]:

    • %{REQUEST_URI}是Apache的服务器变量,代表当前请求的完整路径(比如/wp-blog/post-1)。
    • (?!wp-admin)是负向前瞻断言,确保/wp-blog/后面紧跟的不是wp-admin,完美排除后台路径。
    • [NC]表示不区分大小写,兼容不同大小写的请求(比如/WP-BLOG/Post-1)。
  • RewriteRule ^wp-blog/(.*)$ /blog/$1 [R=301,L]:

    • ^wp-blog/(.*)$捕获/wp-blog/后面的所有内容(比如post-1)到$1变量。
    • /blog/$1把捕获的内容拼接到/blog/后面,生成正确的前端路径。
    • R=301表示永久重定向(适合生产环境),测试阶段可以先用R=302临时重定向,避免浏览器缓存错误规则。
    • L表示这是最后一条规则,匹配成功后停止后续规则的处理。

注意事项

  1. 测试后台访问:访问example.com/wp-blog/wp-admin应该不会被重定向,能正常进入WordPress后台。
  2. 清除浏览器缓存:如果之前测试过错误的重定向,记得清除浏览器缓存再测试新规则。
  3. 规则位置:一定要放在WordPress自带规则的前面,否则WordPress的内部重写会优先处理,导致重定向不生效。

内容的提问来源于stack exchange,提问作者Marcos Pérez Gude

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:11:46