WordPress下.htaccess不存在目录重写规则配置异常求助
解决WordPress下.htaccess重定向不存在目录的问题
我之前也踩过这个坑!问题出在你没加真实目录存在性判断,导致WordPress的重写规则或者你的自定义规则把真实存在的目录也给转去redir.php了。下面是修正后的方案,直接套用就行:
正确的重写规则(放在WordPress规则之前)
打开你的根目录.htaccess文件,找到# BEGIN WordPress这一行,把下面的代码放在它之前(避免被WordPress自动覆盖):
# 重定向根目录下不存在的子目录到redir.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^/([^/]+)/?$ RewriteRule ^ redir.php?dir=%1 [L,QSA]
规则详解
RewriteCond %{REQUEST_FILENAME} !-d:核心判断!意思是“当前请求的路径不是一个真实存在的目录”,这样就跳过了所有已存在的目录请求RewriteCond %{REQUEST_URI} ^/([^/]+)/?$:精准匹配根目录下的一级目录请求(比如/blog或/blog/这种格式),把目录名称捕获到%1变量里RewriteRule ^ redir.php?dir=%1 [L,QSA]:把请求重定向到redir.php,并把捕获的目录名称作为dir参数传递;[L]表示执行完这条规则就停止后续匹配,[QSA]保留原请求的查询字符串(如果有的话)
注意事项
- 如果你之前已经加过
RewriteEngine On,可以删掉重复的那一行,.htaccess里只需要一个RewriteEngine On - 测试的时候记得清一下浏览器缓存,或者用无痕模式访问,避免旧规则的缓存影响结果
- 如果你的站点部署在子目录里,需要调整
RewriteCond %{REQUEST_URI}里的路径匹配(比如子目录是/wp,就改成^/wp/([^/]+)/?$)
内容的提问来源于stack exchange,提问作者zoltar
相关产品推荐
相关产品推荐

