想象一下,你有一组产品类别组织在一个漂亮的树形层次结构中,你想提供可黑客的网址来浏览这些.你可以这样做
/catalog/categorya/categoryb/categoryc
然后,您可以很容易地确定应该列出产品的类别(请注意,由于您可以使用相同名称但在层次结构中的不同位置的类别,因此需要完整的URL)
现在添加产品信息的好方法是什么呢?举个例子,您想要显示此类别的产品Oblivion
/catalog/games/consoles/playstation/adventure
在网址末尾添加产品很诱人
/catalog/games/consoles/playstation/adventure/oblivion
但是当你这样做的那一刻,你就失去了知道它的类别或被称为遗忘的产品的能力.我个人认为没有被迫添加后缀,如.html
/catalog/games/consoles/playstation/adventure/oblivion.html
将是最好的解决方案并使用某种前缀,例如
/catalog/games/consoles/playstation/adventure/product:oblivion
你也可以添加一些类似的触发器
/catalog/games/consoles/playstation/adventure/PRODUCT/oblivion
不是那么好,你会(尽管它不太可能是一个问题)限制你自己的产品类别
到目前为止,后缀解决方案看起来像是最方便用户的方法,我可以从头脑中想到但我不喜欢使用扩展
你对此有何看法?
深深的道路让我感到烦恼.他们很难分享.
/product/1234/oblivion --> direct page /product/oblivion --> /product/1234/oblivion if oblivion is a unique product, --> ~ Diambiguation page if oblivion is not a unqiue product. /product/1234/notoblivion -> /product/1234/oblivion /categories/79/adventure --> playstation adventure games /categories/75/games --> console games page /categories/76/games --> playstation games page /categories/games --> Disambiguation Page.
否则,长网址虽然看似可以破解,但需要让所有节点元素正确破解它.
以php.net为例
php.net/str_replace --> goes to http://nz2.php.net/manual/en/function.str-replace.php
而且这种模式非常容易让人盲目地使用它.
注意:W3C认为.html后缀在功能上毫无意义且冗余,在URL中应避免使用.html后缀.
http://www.w3.org/Provider/Style/URI
让我们删除你的URL,以便更干(非重复).以下是您的开始:
/catalog/games/consoles/playstation/adventure/oblivion
实际上,该类别adventure
是多余的,因为游戏可以属于多种类型.
/catalog/games/consoles/playstation/oblivion
接下来的事情是我也不需要游戏机.将PC机和控制台机器区分为一个小节可能不是一个好主意.它们是所有类型的机器,通过这样做,您只是增加了另一层次的复杂性.
/catalog/games/playstation/oblivion
现在,您正在就您的网站做出一些决定.我建议删除playstation
页面上的类别,因为游戏可以跨多个平台以及games
类别存在.您的网址应如下所示:
/catalog/oblivion
那么如何获得Playstation所有动作游戏的列表?
/catalog/tags/playstation+adventure
也许
/catalog/tags/adventure/playstation
订单并不重要.您还必须确保它tags
是产品的保留名称.
最后,我假设你不能/catalog
因冲突而删除root .但是,如果您的站点很小并且没有很多其他部分,那么将所有内容减少到根级别:
/oblivion /tags/playstation/adventure
哦,如果oblivion
不是一个独特的产品,只需构建一个包含它的ID的slug:
/1234-oblivion