URL重写以删除参数但发送它

时间:2010-07-02 20:15:02

标签: apache mod-rewrite

我目前在我的网站上使用register.php?referal = gamestand,这样当用户通过referal网站访问我的网站时,我可以跟踪有多少玩家从该地点注册。

referal =游戏台将使用echo $ _GET ['code']在注册过程中自动填写输入文本字段;

问题是...在Google上我有来自这些参考的大量链接,我想将它们301到我的register.php页面将SEO得分合并为一个并最终删除这些愚蠢的register.php?代码=来自谷歌的游戏台风格链接。

我有这个重写规则...删除了?code = gamestand位,但它实际上没有传递参数,可能是因为它重定向并且什么也没发送?

RewriteCond %{QUERY_STRING} ^(.*)code(.*)$
RewriteRule ^(.*)$ http://localhost/mywebsite/httpdocs/register.php? [R=301,L] 

它会将register.php?code = gamestand更改为register.php,但正如我所说,$ _GET ['code']现在是空的,我又回到了原点!

如果有人知道的话,感谢任何帮助......谢谢! DOM

2 个答案:

答案 0 :(得分:0)

您可以将引荐来源存储在会话变量中,然后在没有代码的情况下重定向到register.php。您的网址将不再包含该代码,但可以通过会话获得。

session_start();
if (isset($_GET['code'])) {
  $_SESSION['code'] = $_GET['code'];
  header('Location: register.php');
  exit;
}

...

echo $_SESSION['code'];

答案 1 :(得分:0)

将这些网址重定向到同一个网址可能不会将您的搜索引擎优化得分合并为一个。你现在的方法很好,不要乱用它。