.htaccess中RewriteRule失效问题:访问kahuk-ajax跳转错误
问题描述
我的.htaccess配置内容如下:
## Options +FollowSymlinks -MultiViews RewriteEngine on RewriteBase / ## Allow a few SEO Files direct access. RewriteRule ^robots.txt?$ robots.txt [L] RewriteRule ^ads.txt?$ ads.txt [L] RewriteRule ^sellers.json?$ sellers.json [L] ## Avoid rewriting rules for the admin section RewriteRule ^(admin|resources)($|/) - [L] ## Set Ajax Request File RewriteRule ^(kahuk-ajax)/?$ kahuk-ajax.php? [L,QSA] ## Set controller with id RewriteRule ^([^/]+)/([0-9]+)/?$ index.php?con=$1&id=$2 [L,QSA] ## Set controller with slug RewriteRule ^([^/]+)/([^/]+)/?$ index.php?con=$1&slug=$2 [L,QSA] ## For paging RewriteRule ^([^/]+)/page/([0-9]+)/?$ index.php?con=$1&page=$2 [L,QSA] RewriteRule ^([^/]+)/([^/]+)/page/([0-9]+)/?$ index.php?con=$1&slug=$2&page=$3 [L,QSA] ## Set controller for only one parameter RewriteRule ^page/([^/]+)/?$ index.php?con=page&slug=$1 [L,QSA] RewriteRule ^([^/]+)/?$ index.php?con=$1 [L,QSA] ## Set home page RewriteRule ^/?$ index.php?con=home [L]
当我访问http://example.com/kahuk-ajax/?prefix=manage-story-vote时,实际打开的是index.php而非预期的kahuk-ajax.php,请问哪里配置出错了?
问题排查与修复
核心原因
你的请求之所以匹配到后面的index.php规则,主要有两个可能:
kahuk-ajax.php文件不存在或路径错误:如果规则指向的kahuk-ajax.php不在网站根目录,Apache找不到这个文件,就会跳过当前规则继续匹配后续规则,最终命中^([^/]+)/?$这条通用规则,重写到index.php?con=kahuk-ajax。.htaccess中[L]标记的局限性:在目录级的Rewrite规则中,[L]只是终止当前轮次的规则处理,Apache会用重写后的URL重新从头匹配规则。如果kahuk-ajax.php存在,但后续规则仍能匹配到重写后的路径,就会再次被改写。
修复方案
步骤1:验证文件存在性
先确认kahuk-ajax.php文件确实放在网站根目录,并且Apache服务器拥有读取该文件的权限。
步骤2:修改Rewrite规则
将原有的Ajax请求规则替换为:
## Set Ajax Request File RewriteRule ^kahuk-ajax/?$ kahuk-ajax.php [END,QSA]
- 去掉了不必要的分组括号,简化正则表达式;
- 移除了目标路径末尾的
?(它会清除原查询参数,而QSA已经会自动保留参数); - 用
[END]替代[L]:END标记会完全终止所有Rewrite规则的处理,避免Apache用重写后的URL再次匹配规则,彻底解决后续规则干扰的问题(需确保Apache版本在2.4及以上,这是目前主流服务器的标配)。
额外检查
如果网站根目录下存在名为kahuk-ajax的物理目录,Apache会优先处理目录跳转,导致Rewrite规则失效。此时需要先排除该目录的重写,再添加Ajax规则:
## 排除kahuk-ajax目录的重写 RewriteRule ^kahuk-ajax(/.*)?$ - [END] ## Set Ajax Request File RewriteRule ^kahuk-ajax/?$ kahuk-ajax.php [END,QSA]
内容的提问来源于stack exchange,提问作者Shah Alom
相关产品推荐
相关产品推荐

