如何通过htaccess配置移除URL中的?q=参数实现URL美化
问题原因
你遇到的问题是重写规则触发了二次重写循环:
- 首次请求
/something时,规则会将其重写为index.php?q=something - 重写后的请求
index.php会再次进入重写规则匹配,被重写为index.php?q=index.php,最终你拿到的q参数就被覆盖成了index.php
修复方案
1. 修改.htaccess配置
替换原有规则为以下内容:
RewriteEngine On # 排除真实存在的文件、目录,避免静态资源被重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # L表示匹配后终止当前轮重写,QSA表示自动追加原URL的其他查询参数 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
2. 确认Apache基础配置生效
- 确保Apache已开启
mod_rewrite扩展 - 确保站点配置中对应目录的
AllowOverride参数设置为All,否则.htaccess文件不会生效
修改完成后重启Apache服务,再次访问https://example.com/something即可正常获取到q参数的值为something。
内容的提问来源于stack exchange,提问作者Levente
相关产品推荐
相关产品推荐

