我们的系统
我们的搜索模块可以包含许多参数,例如
并且有分页和排序参数,如
我们曾经有过以下网址: -
www.projectname/module/search/<search keyword>/<examination filter>/<subject filter>/
www.projectname/module/search/<search keyword>/<examination filter>/<subject filter>/<Page number>,<Number of results in a page>,<sort field>,<sort order>
.... ... ...
我们在htaccess中为每个变体都有一个重写规则。
当前问题
由于多个URL导致代码维护出现问题,我现在正在使用PHP函数来执行任务而不是htaccess,这类似于Zend,Codeignitor等框架的URL库。
我的问题
考虑到每次都不需要所有搜索过滤器/ parma这一事实,我只想提出一些关于以下哪种URL格式约定的建议。因此,以下哪两项约定更好: -
所有网址中都包含所有网址参数,无论是否需要,例如: -
www.projectname / module / search / hello // 110 / ...所有其他参数......
这里我们不需要提到哪个参数是搜索关键字,哪个是主题过滤器。一个简单的URL解析器函数总是假定来自www.projectname / module /的第二个参数作为搜索关键字(在本例中为hello),对于其他参数也是如此。在此示例中,检查过滤器不适用,因此它保留为空并且不会破坏URL但是它很好。如果有很多空白参数,那么会出现许多背靠背斜线
允许以任何顺序自由传递URL参数: -
www.projectname / module / search / search_keyword / hello / subject_filter / 110 / ...其他需要的参数只出现... www.projectname / module / search / subject_filter / 110 / search_keyword / hello / ...其他需要的参数只出现...
这两个网址的含义相同 在此约定中,URL解析器函数解析每个名称 - 值对,并将名称“search_keyword”旁边的值作为搜索关键字,对其他人类似(在此示例中,name = search_keyword,value = hello)。该函数将解析每个名称值对,因此显示为其他对的值的术语search_keyword不会发生干扰。
在建议时请考虑以下因素: - - SEO友好 - 易于维护(考虑将来可能添加新的过滤器)
请提供一些改善SEO友好性的提示。我对此知之甚少
由于
答案 0 :(得分:0)
在Zend Framework中,Request对象允许以任何顺序传递数据,并最终使用Router或Url View帮助程序以您希望的方式创建页面URL。
这是我所知道的最佳模式。没有.htaccess规则。
答案 1 :(得分:0)
我自己选择了最好的解决方案。我觉得第二个约定,即Allowing freedom to pass URL params in any order
更好,只是因为如果在某些情况下不传递一个或多个参数,第一个约定可能会导致背对背斜杠。要详细了解为什么我们应该避免不必要的背靠背斜线检查Why we don’t use such URL formats?