我很难让我的头脑使用REST风格的URLS。我可以得到一些帮助吗?现在我有一个查询字符串,像这样:REST风格的URL和PHP
example.com/calendar_expanded?date=1270094400
我有一个国防部重写是在隐瞒了PHP扩展。我如何
- 使这个
calendar_expanded/date/1270094400
发生。 $_GET
从事后的URL值?
我喜欢背后的概念,但每天工作16个小时以满足整个月的截止日期对我的大脑产生影响。
感谢您的帮助。
我很难让我的头脑使用REST风格的URLS。我可以得到一些帮助吗?现在我有一个查询字符串,像这样:REST风格的URL和PHP
example.com/calendar_expanded?date=1270094400
我有一个国防部重写是在隐瞒了PHP扩展。我如何
calendar_expanded/date/1270094400
发生。$_GET
从事后的URL值?我喜欢背后的概念,但每天工作16个小时以满足整个月的截止日期对我的大脑产生影响。
感谢您的帮助。
如果您想创建相当多的REST URL,您应该考虑使用利用Front Controller设计模式的PHP框架。
这样,每个请求都由框架处理,您可以灵活地设计您的URL,但它们应该看起来像。
E.g. Symfony支持开箱即用的REST风格设计。
顺便说一句,如果参数在某种程度上是固定的并指定了资源,例如博客文章的标题,那么RESTful URL才有意义。如果您只想将参数传递给控制一个表的排序(即某些东西的视图),那么这应该作为查询字符串中的“普通”GET参数。
在你的情况下,它看起来像你想控制哪一天应该显示在日历中。我个人会在这里使用普通的GET查询字符串。
Kohana是我们工作时使用的框架。它默认将一个像example.com/my_controller/controller_method/param1/param2这样的URL路由到一个名为“controller_method”的控制器中,该控制器名为“my_controlled”,参数“param1”和“param2”...漂亮NEATO。 – sberry 2010-01-22 23:10:51
我认为这是最正确的答案,费利克斯看着我真正想做的事情。你是对的,我通过日期变量来控制日历。我想我会坚持我现有的格式。我将阅读这篇文章,因为我觉得它可能在某些时候派上用场。谢谢。 – jay 2010-01-23 03:12:17
+1用于区分REST和外观漂亮的网址。我看到一些混淆,人们认为通过使用URL重写,他们使他们的应用程序成为RESTful--事情并非总是如此。 – 2010-01-23 16:18:11
您需要检查$_SERVER[ 'REQUEST_URI' ]
或$_SERVER[ 'PATH_INFO' ]
而不是$_GET
。
$_SERVER[ 'REQUEST_URI' ]
将保持这个/calendar_expanded/date/1270094400?quertStringParams=1&etc...
$_SERVER[ 'PATH_INFO' ]
将保持这个/calendar_expanded/date/1270094400
换句话说,你必须将这些值分解成其单独的部分,通过使用explode()
和喜欢。我建议你使用$_SERVER[ 'PATH_INFO' ]
作为主题,因为真正的查询字符串变量已经在$_GET
中可用。
这是你在找什么?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ calendar_expanded.php?url=$1 [QSA,L]
</IfModule>
这是我记得的CakePHP做的,当它第一次来到了......说不上来,如果它仍然没有...
也许只需要更新您的重写规则是这样的:'重写规则^ calendar_expanded /日期/ ([0-9] +)$ calendar_expanded.php?date = $ 1' – anomareh 2010-01-22 22:46:30