2009-10-01 79 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]強制重定向,而不是簡單的重寫,這對你程序的邏輯可能不起作用。