如何使用mod_rewrite根据查询字符串参数跳转到指定外部域名
这个需求完全可以通过mod_rewrite实现,操作步骤如下:
配置示例
将以下规则添加到站点根目录的.htaccess文件,或者Apache虚拟主机的配置段中即可:
# 开启重写引擎 RewriteEngine On # 匹配查询字符串中的u参数,捕获参数值存入变量%1 RewriteCond %{QUERY_STRING} (?:^|&)u=([^&]+)(?:&|$) # 适配所有路径的请求,重定向到u参数对应的地址,末尾?用于丢弃原有查询参数 # 测试阶段使用302临时重定向,确认规则无误后可改为301永久重定向 RewriteRule ^.*$ https://%1? [R=302,L]
注意事项
- 如果你传入的u参数本身已经包含
http://或https://协议前缀,把RewriteRule里的https://去掉即可,直接写%1? - 你的请求中还有h参数,建议新增RewriteCond规则先校验h参数的合法性,避免站点被利用为开放重定向跳板,引发安全风险
- 调试阶段不要使用301状态码,301重定向会被浏览器长期缓存,容易导致规则修改后不生效
- 如果只需要匹配根路径的请求,把RewriteRule里的
^.*$改为^$即可
内容的提问来源于stack exchange,提问作者Jason W
相关产品推荐
相关产品推荐

