WordPress根目录下无法用.htaccess重写/jobs/子目录URL求助
解决WordPress根目录下/jobs/子目录的URL重写问题
调整根目录.htaccess规则
WordPress的默认规则会终止后续匹配,你需要调整规则顺序并修正参数映射逻辑,以下是可用的完整配置:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 1. 301永久重定向:将旧动态URL转为友好URL RewriteCond %{QUERY_STRING} ^q=([^&]+)&l=([^,]+),([^&]+)$ RewriteRule ^jobs/jobs\.php$ /jobs/%1/%3/%2/? [R=301,L,NC] # 2. 正向重写:将友好URL映射到实际处理脚本 RewriteRule ^jobs/([^/]+)/([^/]+)/([^/]+)/?$ /jobs/jobs.php?q=$1&l=$2,$3 [NC,QSA,L] # BEGIN WordPress RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress </IfModule> # php -- BEGIN cPanel-generated handler, do not edit # Set the “ea-php81” package as the default “PHP” programming language. <IfModule mime_module> AddHandler application/x-httpd-ea-php81 .php .php8 .phtml </IfModule>
关键修正说明
- 规则顺序:把跳转和重写规则放在WordPress默认规则之前,避免被WordPress的
[L]标记终止后续匹配。 - 参数映射修正:原配置中
l=$3,+$2的顺序错误,友好URL的/state/city/对应原参数l=city,state,所以应改为l=$2,$3。 - 添加[L]标记:给正向重写规则加
[L],确保匹配后不再执行WordPress规则,避免干扰。 - 子目录规则清理:删除/jobs/子目录下的
.htaccess文件,根目录规则已覆盖需求,子目录规则会导致冲突。
测试注意事项
- 清空浏览器缓存后再测试,301重定向会被浏览器缓存。
- 确认/jobs/目录存在且
jobs.php文件位置正确。 - 确保服务器已启用
mod_rewrite模块。
内容的提问来源于stack exchange,提问作者DRK
相关产品推荐
相关产品推荐

