如何通过.htaccess重定向带额外查询参数的友好URL?
正确的.htaccess配置方案
核心规则实现(支持带额外查询参数)
首先开启重写引擎,然后添加以下规则:
RewriteEngine On # 处理友好URL到实际PHP页面的重写,保留查询参数 RewriteRule ^courses/(\d+)$ courses.php?page=$1 [QSA,L]
规则说明
^courses/(\d+)$:匹配路径为courses/数字的URL(比如courses/1),(\d+)捕获URL中的数字作为page参数的值courses.php?page=$1:指定重写的目标页面,$1对应前面捕获到的数字[QSA,L]:QSA(Query String Append)是关键,它会自动把原URL的所有查询参数(比如?p1=1&p2=2)附加到目标URL的查询字符串后L表示这是最后一条匹配规则,避免后续规则干扰
可选:强制HTTPS跳转
如果需要将HTTP请求强制转为HTTPS(对应你的示例需求),可以在上述规则前添加:
# 强制HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
注意事项
- 确保服务器已启用
mod_rewrite模块 - 服务器配置中需设置
AllowOverride All,让.htaccess文件的规则生效
内容的提问来源于stack exchange,提问作者Mohamed EL-Gendy
相关产品推荐
相关产品推荐

