HTTP根据查询字符串将一个URL重定向到另一个URL

时间:2013-01-26 06:22:33

标签: php apache redirect http-status-code-301 mod-alias

当请求网址 /page1.php?abc 时,我希望将其重定向到 /page1.php?xyz

具体来说,这就是我想告诉客户的事情:

HTTP/1.1 301 Moved Permanently
Location: /page1.php?xyz

我已经尝试过Apache RedirectMatch指令,但它似乎不支持查询字符串。

是否有另一个指令支持带有查询字符串的URL的HTTP重定向?

目前我正在使用PHP's header function完成此任务,但这感觉就像是一个权宜之计,所以我正在寻找一个Apache解决方案。

2 个答案:

答案 0 :(得分:3)

您可以使用mod_rewrite。如果此模块可用,则使用这些规则(必须放在/.htaccess内):

RewriteEngine on
RewriteCond %{QUERY_STRING} ="abc"
RewriteRule ^page1\.php$ /page1.php?xyz [R=301,L]

还有一个仅限PHP的解决方案:

if ($_SERVER["QUERY_STRING"] == "abc") {
    header("Location: /page1.php?xyz", true, 301);
    die;
}

答案 1 :(得分:0)

我会创建一个自己生成的PHP文件,不知道可以做到这一点的Apache模块/解决方案。

http://php.net/manual/en/function.header.php