.htaccess配置后无法获取$_GET['id']的问题求助
解决display/1无法传递id参数的问题
看起来你的问题出在RewriteRule的路径匹配和.htaccess的位置不匹配上——毕竟你的display.php是放在resources文件夹里的,咱们一步步来解决:
第一步:确认.htaccess的位置
.htaccess的位置直接决定了规则的路径匹配逻辑,分两种情况处理:
情况1:.htaccess放在网站根目录(domain.com/.htaccess)
此时你的目标URL是domain.com/resources/display/1,规则需要匹配完整的路径前缀,修改后的.htaccess应该是:
RewriteEngine on RewriteRule ^resources/display/([0-9]+)$ resources/display.php?id=$1 [L]
解释:^resources/display/([0-9]+)$ 精确匹配以resources/display/开头、后面跟数字的URL,然后重写到对应的display.php文件并传递id参数;[L]标志表示这是最后一条规则,避免后续规则干扰。
情况2:.htaccess放在resources文件夹(domain.com/resources/.htaccess)
此时规则是相对于resources文件夹的,只需要匹配display/数字的路径即可,修改后的.htaccess:
RewriteEngine on RewriteRule ^display/([0-9]+)$ display.php?id=$1 [L]
这样访问domain.com/resources/display/1就会正确映射到同文件夹下的display.php?id=1。
第二步:排查常见的生效障碍
如果修改后还是不行,检查这几个点:
- 确认Apache的
mod_rewrite模块已经启用:可以通过phpinfo()查看,或者联系主机商确认 - 确保网站根目录(或者resources文件夹)的Apache配置里设置了
AllowOverride All,否则.htaccess的规则会被忽略 - 清除浏览器缓存,或者用隐私模式访问,避免旧的缓存URL干扰
- 检查是否有其他Rewrite规则和当前规则冲突,比如前面的规则已经改写了路径
测试的时候,直接访问目标URL,然后在display.php里用var_dump($_GET['id'])来确认参数是否传递成功,这样更容易排查问题。
内容的提问来源于stack exchange,提问作者Advay Ratan
相关产品推荐
相关产品推荐

