我正在为我的网站创建一个新的网址基础架构,并遇到了这个问题:
如果我有像这样的“/ Products / Beverages / Minty-chocolate-drink / Distributors”的无扩展名网址,我无法区分参数和页面...
通过在我的页面中找到最长匹配并将其余部分视为参数,我可以找出调用了哪个页面,但是找不到页面的情况呢?
像“/ Prodcts / Beverages / Minty-chocolate-drink / Distributors”这样的URL(注意“Prodcts”中的错误拼写)不会抛出404,而是映射到索引页面,所有URL都作为参数!
现在,我可以使用f.ex来分割参数。 [page] / p / [参数],但这非常不太时尚,而且用户不太友好。
您是否看到另一种解决方案可以将URL保留在第一个示例中,但是启用了一个未找到页面的方案?
答案 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
)
希望从这里你可以看到我要去的地方。我也是从答案来到这里的,所以这可能不是最好的方法。