带参数的无扩展URL,404s怎么样?

时间:2010-01-03 12:10:15

标签: url parameters seo http-status-code-404

我正在为我的网站创建一个新的网址基础架构,并遇到了这个问题:

如果我有像这样的“/ Products / Beverages / Minty-chocolate-drink / Distributors”的无扩展名网址,我无法区分参数和页面...
通过在我的页面中找到最长匹配并将其余部分视为参数,我可以找出调用了哪个页面,但是找不到页面的情况呢?

像“/ Prodcts / Beverages / Minty-chocolate-drink / Distributors”这样的URL(注意“Prodcts”中的错误拼写)不会抛出404,而是映射到索引页面,所有URL都作为参数!

现在,我可以使用f.ex来分割参数。 [page] / p / [参数],但这非常不太时尚,而且用户不太友好。

您是否看到另一种解决方案可以将URL保留在第一个示例中,但是启用了一个未找到页面的方案?

4 个答案:

答案 0 :(得分:0)

为什么必须将无效的URL请求映射到索引页而不是将其重定向到专用的错误页面?规则会更简单

答案 1 :(得分:0)

如果索引页面无法处理参数,它也可能会抛出404,毕竟,没有为此URL显示的唯一内容(即使它映射到页面,但浏览器和用户不会知道产品是参数而不是目录),所以404是完美的。

编辑:显然这将适用于每个页面,不仅适用于索引页面:如果找到未知参数:404

答案 2 :(得分:0)

歧义不是一个好主意。你可能最好分离runmodes表单参数:

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

答案 3 :(得分:0)

我不确定这是否有效,更不用说为你了。

您可以使用$_SERVER["REQUEST_URI"];返回/产品/饮料/薄荷巧克力饮料/分销商

然后用爆炸分开它:

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

哪个会给你:

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

希望从这里你可以看到我要去的地方。我也是从答案来到这里的,所以这可能不是最好的方法。