2012-03-07 168 views
1

我期待在HTML表單中提交過濾器後創建一個SEO友好的URL。搜索引擎優化友好的HTML/PHP表單提交

在玩了一段時間之後,我找到了一種方法,但是我想知道人們怎麼看待它,因爲我是新開發的。

我在.htaccess文件中添加了一些重寫規則,以使url更友好。

原始地址:? 網站娜/ list.php的品牌= brand1 &分鐘價格= 0 &最高價格= 2000

重寫後的URL: 站點名稱/節/ brand1下面的例子/ 0-200

目前我有一個提交信息到一個單獨的PHP頁面,其收集的變量,並創建從一個新的URL,然後用一個301重定向示例的形式PHP下面:

$min = $_GET[‘min-price’]; 
$max = $_GET[‘max-price’]; 
$brand = $_GET[‘brand’] ; 

header ('HTTP/1.1 301 Moved Permanently'); 
header('Location: http://site-name/section/' . $brand . '/'. $min.'-'.$max); 
exit(); 

正如您所看到的那樣,它會收集信息並將您帶回頁面並聲明上一頁已永久移動。

問題:

  1. 雖然這也許很原始,這將仍然是好的,而不會造成太多的麻煩使用?

  2. Google是否會恨我創造這麼多的301的

  3. 只注意到代碼標題(「位置:/foo.php",TRUE,301);最好是使用這個還是沒有區別?

回答

2
  1. 是的,我看到您的解決方案沒有問題。即使有惡意用戶輸入,也只是重定向到不存在的頁面。

  2. 我不這麼認爲。您已經使用正確的代碼301,而不是默認的302,這可能會導致一些麻煩/對Google造成一些破壞,被盜的PR和SEO

  3. 使用標題(「位置:...」,真,301 );是可取的。這樣php可以自動根據環境做出決定。例如。如果使用HTTP/1.0連接,php可以使用HTTP/1.0發送301代碼,而不是在解決方案中使用固定的HTTP/1.1。但是,無論哪種方式都很好。

但有一個問題:爲什麼不直接鏈接到你的漂亮的URL?然後你正在使用的mod_rewrite已經負責將給定的參數和URL一起分配給你可以像往常一樣通過$ _GET訪問的變量。

-3

搜索引擎不提交表單。
因此,沒有任何形式動作必須友善。 (另一個結果 - 不,谷歌不會恨你)。

做額外的重定向而不是顯示錶單結果是沒有意義的。

+0

你能否澄清「沒有做額外的重定向,而不是顯示錶單結果只是沒有任何意義。」手段。你是否認爲將list.php?品牌重定向到/ foo/bar/zum沒有價值? – AD7six 2012-03-07 12:17:29

+0

當然。如果有的話,谷歌會自己做。 – 2012-03-07 12:33:33

+0

感謝您澄清您的回覆 - 您錯了:) – AD7six 2012-03-07 12:37:19

0

你做事情的方式是post redirect get(PRG)模式的變換。在你的情況下,它是獲取重定向獲取。

什麼PRG通常的意思是:

  • 用戶張貼形式向控制器,它確實任何你想要的,並建立所需的URL
  • 腳本重定向使用所需的URL
  • 用戶獲取網址,看到結果。

一般來說,這是一個很好的模式,它允許你控制 - 例如, - 從結果搜索網址中移除默認值。

關於你提到的具體問題

  1. 如果它的工作原理,它的罰款
  2. 谷歌將不會提交的形式,這樣就不會被發現的預處理網址獲得301重定向,除非這些網址已經存在於其他地方。但是,您需要鏈接到任何搜索引擎的「http:// site-name/section/brand/min-max」才能知道頁面存在。
  3. 要麼是好的,一行代碼是更容易一些,雖然
+0

獲取/重定向/獲取模式只是沒有意義,你知道。 – 2012-03-07 12:06:47

+0

有道理,因爲這就是他正在做的事情,並要求對 – AD7six 2012-03-07 12:13:37

+0

的反饋非常感謝那些信息AD7,它很有趣,當你認爲你做了一些獨特的事情時,它已經在......之前已經完成了。方法...感謝您的輸入:) – 2012-03-07 16:19:00