2009-10-01 43 views
1

我是一个mod_rewrite noob,我很头痛,想弄清楚应该很简单的事情。我想要做的是从使用GET表单后显示的URL中去除不需要的变量。换句话说,我试图改变这种:使用mod_rewrite剥离某些GET变量

stats.php?gender=W&team_id=88&btnGet=Get+Stats 

这样:

stats.php?team_id=88 

请帮帮我!

编辑:我所要做的只是删除我的表单中的“性别”和提交按钮的“名称”属性。感谢太多的PHP和Gumbo的解决方案!当然,有一个更简单的方法来完成这一点。 :)

+0

你为什么要这么做?这是为了SEO的原因吗?如果是这样,你可以使用规范元标记,以便谷歌将忽略额外的查询字符串数据。请参阅:http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html –

+0

它也是使用Ajax的自引用GET表单的一部分。一个人选择一个性别,然后选择一个团队,然后按“获取统计”。我想从网址中删除额外的变量,只是为了整理一些东西。基本上,表单只用于计算team_id,并且统计信息显示在表单下方。 – MonkeyWrench32

+0

只是不要给提交按钮一个名字。 – Gumbo

回答

2

这甚至会实现什么?该URL在用户的地址栏中仍然显示完全相同,并且PHP更有能力忽略掉mod_rewrite永远存在的变量$_GET变量。

尝试从您的提交按钮中删除'name="btnGet"'属性,并删除'gender'字段。您也可以使用Javascript来动态删除不需要的表单元素。

1
RewriteCond %{QUERY_STRING} team_id=([0-9]+) 
RewriteCond %{QUERY_STRING} btnGet 
RewriteRule stats.php stats.php?team_id=%1 [R] 

您无法使用RewriteRule匹配查询字符串 - 您必须使用RewriteCond。由于“太多”表示,只是重写不会导致用户可见的变化,除非您重新加载页面。所以你需要[R]强制重定向,而不是简单的重写,这对你程序的逻辑可能不起作用。