如何通过.htaccess重定向带相同参数的不同基础URL并保留参数?
嘿,我来帮你搞定这个参数丢失的重定向问题!这种跨域名带参数重定向的坑我之前也踩过,给你几个靠谱的方案,看你用的是哪种服务器:
Apache服务器(使用.htaccess配置)
如果你的旧站点是Apache环境,直接在旧站点的根目录(或者cancelacion.php所在目录)的.htaccess文件里添加以下规则:
RewriteEngine On RewriteCond %{HTTP_HOST} ^oldsite\.com$ [NC] RewriteRule ^cancelacion\.php$ http://newsite.com/cancelacion.php?%{QUERY_STRING} [R=301,L]
RewriteCond用来匹配旧域名,[NC]表示不区分大小写RewriteRule匹配旧的PHP文件路径,后面的?%{QUERY_STRING}就是关键——它会把旧URL里的所有参数原封不动带到新URL里R=301是永久重定向,如果你只是临时测试可以改成R=302,L表示这是最后一条规则,避免后续规则干扰
Nginx服务器
如果旧站点用的是Nginx,在对应的server配置块里添加这段rewrite规则:
server { listen 80; server_name oldsite.com; location = /cancelacion.php { rewrite ^ http://newsite.com/cancelacion.php?$query_string permanent; } }
location = /cancelacion.php精准匹配这个文件路径?$query_string会自动把请求的参数拼接过去,permanent对应301永久重定向,临时的话用redirect
备用方案:直接修改PHP脚本
如果服务器配置没法改,那直接修改旧站点的cancelacion.php文件,用PHP的header函数做跳转:
<?php // 获取原URL的所有参数 $query = $_SERVER['QUERY_STRING']; // 跳转到新URL并带上参数 header("Location: http://newsite.com/cancelacion.php?$query", true, 301); exit; ?>
这个方法最直接,不管服务器环境是什么都能生效,只要确保旧脚本能正常执行就行。
测试的时候记得清一下浏览器缓存,因为301重定向会被浏览器缓存,可能导致你看不到最新的效果哦!
内容的提问来源于stack exchange,提问作者Raahull
相关产品推荐
相关产品推荐

