建议最佳网址风格

时间:2010-07-10 06:33:20

标签: url-routing maintenance seo

我们的系统

我们的搜索模块可以包含许多参数,例如

  • 搜索关键字
  • 考试过滤器
  • 主题过滤器
  • 日期范围过滤器
  • 课程名称过滤器 ... ... 等

并且有分页和排序参数,如

  • 页码
  • 页面中的结果数量
  • 排序字段
  • 排序顺序

我们曾经有过以下网址: -

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格式约定的建议。因此,以下哪两项约定更好: -

  1. 所有网址中都包含所有网址参数,无论是否需要,例如: -

    www.projectname / module / search / hello // 110 / ...所有其他参数......

    这里我们不需要提到哪个参数是搜索关键字,哪个是主题过滤器。一个简单的URL解析器函数总是假定来自www.projectname / module /的第二个参数作为搜索关键字(在本例中为hello),对于其他参数也是如此。在此示例中,检查过滤器不适用,因此它保留为空并且不会破坏URL但是它很好。如果有很多空白参数,那么会出现许多背靠背斜线

  2. 允许以任何顺序自由传递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不会发生干扰。

  3. 在建议时请考虑以下因素: - - SEO友好 - 易于维护(考虑将来可能添加新的过滤器)

    请提供一些改善SEO友好性的提示。我对此知之甚少

    由于

2 个答案:

答案 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?