如何使用mod_rewrite规则将URL参数转换为锚点格式
Apache mod_rewrite 实现方案
前提条件
- 已启用 Apache
mod_rewrite模块 - 站点目录配置中已开启
AllowOverride All权限,允许.htaccess文件生效
根路径转换规则(适配 myurl.com/?id=para 转 myurl.com/#para)
将以下规则写入站点根目录的 .htaccess 文件即可:
RewriteEngine On # 匹配查询字符串中id参数的取值 RewriteCond %{QUERY_STRING} ^id=([^&]+)$ # 跳转至带锚点的地址,末尾?用于清除原有查询字符串 RewriteRule ^$ /#%1? [R=302,L]
规则说明
^id=([^&]+)$会捕获id参数的内容存入分组%1,如果需要兼容id参数前后存在其他查询参数的场景,可以将匹配规则修改为^.*id=([^&]+).*$- 标记
R=302代表临时跳转,确认规则无问题后可改为R=301启用永久跳转提升SEO效果 - 标记
L代表匹配到当前规则后停止执行后续重写规则
全路径适配规则
如果需要适配站点所有路径下的参数转换,例如 myurl.com/article/?id=123 转 myurl.com/article/#123,可以将上面的RewriteRule改为:
RewriteRule ^(.*)$ /$1#%1? [R=302,L]
内容的提问来源于stack exchange,提问作者svenfricke
相关产品推荐
相关产品推荐

