代码之家  ›  专栏  ›  技术社区  ›  jay

REST样式的URL和PHP

  •  3
  • jay  · 技术社区  · 14 年前

    我真的很难用REST风格的URL来解决这个问题。我能帮个忙吗?现在我有一个这样的查询字符串:

    example.com/calendar_expanded?date=1270094400

    我有一个隐藏.php扩展名的mod rewrite。我该怎么办

    1. 做这个 calendar_expanded/date/1270094400 发生。
    2. $_GET 事实之后的URL值?

    我喜欢它背后的概念,但是为了完成一个月的最后期限,每天工作16个小时,这对我的大脑来说是个沉重的打击。

    谢谢你的帮助。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Felix Kling    14 年前

    如果您想创建大量的REST URL,应该考虑使用一个PHP框架 Front Controller 设计模式。

    这样,每个请求都由框架处理,您可以灵活地设计URL,不管它们看起来如何。

    例如。 Symfony 支持开箱即用的宁静设计。

    btw restful urls只有在参数固定并且指定了资源(例如博客文章的标题)时才有意义。如果您只想传递一个参数,例如控制表的排序(例如,某个对象的视图),那么应该将其作为“普通”get参数传递到查询字符串中。

    在您的情况下,您似乎希望控制日历中应显示的日期。我个人只会在这里使用普通的get查询字符串。

        2
  •  3
  •   Decent Dabbler    14 年前

    你需要检查一下 $_SERVER[ 'REQUEST_URI' ] $_SERVER[ 'PATH_INFO' ] 不是 $_GET .

    $服务器['请求\u uri'] 将举行这个 /calendar_expanded/date/1270094400?quertStringParams=1&etc...
    $服务器[路径信息] 将举行这个 /calendar_expanded/date/1270094400

    换句话说,您必须使用 explode() 等等。我建议你用 $服务器[路径信息] 作为主题,因为真正的查询字符串变量将在 $GET 已经。

        3
  •  2
  •   Richard JP Le Guen    14 年前

    这就是你要找的吗?

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ calendar_expanded.php?url=$1 [QSA,L]
    </IfModule>
    

    这就是我记得卡基普刚出来的时候所做的…不知道如果它还存在…