2010-01-03 28 views
0

我創造了我的網站一個新的URL的基礎設施,以及過這樣的問題來了:帶參數的擴展名網址,404s是什麼?

如果我有一個擴展名的URL像這樣「/產品/飲料/薄荷巧克力,飲料/分銷商」,我可以」 t區分頁面參數...
我可以通過查找頁面中最長的匹配找出哪個頁面被調用,並將其餘的頁面視爲參數,但頁面未找到的情況如何?

像「/ Prodcts/Beverages/Minty-chocolate-drink/Distributors」這樣的URL(注意「Prodcts」中的拼寫錯誤)不會拋出404,而是會映射到索引頁面,並將所有URL作爲參數!

現在,我可以用f.ex分割參數。 [頁面]/p/[參數],但這很不方便,不太友好。

您是否看到另一個解決方案可以在第一個示例中保留該URL,但啓用了一個未找到頁面的方案?

回答

0

如果索引頁無法處理參數,它也可能會拋出404,畢竟,這個URL沒有獨特的內容顯示(即使它映射到一個頁面,但是瀏覽器和用戶不知道Products是一個參數而不是目錄),所以404是完美的。

編輯:顯然這會去的每一頁,不僅爲索引頁:如果一個未知參數發現:404

+0

所以簡而言之:讓每個頁面檢查他們的參數,如果出現問題拋出一個404 ...這甚至可能工作。 – wagi 2010-01-03 12:49:14

+0

對,它的工作原理。一直這樣做;-)顯示不同的網址相同的內容是不是很SEO :) – 2010-01-03 18:17:43

+0

嗯,根據slebetmans回答一個更多的問題回答:當有效的參數有效頁面相同的值時,我該怎麼辦?我可以提供頁面或者只是拋出一個500錯誤,但如果它發生的話,這將是一個調試噩夢的地獄...... – wagi 2010-01-04 10:43:06

0

爲什麼你必須將無效的URL請求映射到索引頁面,而不是將其重定向到專用的錯誤頁面?規則會更簡單

0

歧義是不是一個好主意。你可能最好分離runmodes形式參數:

/Products/Beverages/Minty-chocolate-drink?get=distributors 
+0

這難道不簡單嗎?如果我堅持使用.aspx和有這樣的URL:「產品。ASPX /飲料/薄荷巧克力,飲料/分銷商」 – wagi 2010-01-03 12:51:14

0

我不確定這是否會工作,更不用說爲你。

您可以使用$_SERVER["REQUEST_URI"];將返回/產品/飲料/薄荷巧克力飲料/分銷商

然後用它分解爆炸:

$para = explode("/", $_SERVER["REQUEST_URI"]); 

,這將給你:

Array 
(
    [0] => 
    [1] => Products 
    [2] => Beverages 
    [3] => Minty-chocolate-drink 
    [4] => Distributors 
) 

希望從這裏你可以看到我要去的地方。我也是從一個答案來到這裏的,所以這可能不是最好的解決方法。