.htaccess RewriteRule配置不生效 访问美化URL提示blog_id未定义
问题根因
- 最核心的错误是重写规则的标志位写法不符合Apache规范:你写的
[NC, L]中逗号后存在多余空格,mod_rewrite解析时会将空格识别为规则分隔符,导致blog_id=$1的参数传递逻辑失效,最终PHP无法从$_GET中拿到对应的参数。 - 次要可能的问题:你没有在.htaccess中开启重写引擎、未配置子目录对应的重写基础路径,导致规则匹配路径异常。
解决步骤
- 修正重写规则的标志位写法,去掉逗号后的多余空格
- 补全.htaccess的基础配置,如果你是将.htaccess放在
electionhope子目录下,完整配置如下:
RewriteEngine On RewriteBase /electionhope/ RewriteRule ^blog/(\d+)$ blog.php?blog_id=$1 [NC,L]
- (可选)PHP端兼容优化,避免参数不存在时抛出Notice错误,将blog.php第一行修改为:
<?php $blogID = $_GET['blog_id'] ?? 0; ?>
配置修改完成后重启WAMP的Apache服务即可生效。
内容的提问来源于stack exchange,提问作者Δce
相关产品推荐
相关产品推荐

