1

我目前有一个我编写的 PHP 框架,它依赖于混乱的 URL 变量来知道要显示哪些页面或要返回哪些数据,例如

http://someurl.com/myapp/index.php?page=notes&id=34 //显示 html 页面 http://someurl.com/myapp/action.php?itemIdCode=notes&id=34&view=compact //获取 JSON/用于ajax调用的html

我现在想编写自己的路由,以便 URL 看起来像这样:

http://someurl.com/myapp/page/note/34 //为浏览器调用返回一个完整页面 http://someurl.com/myapp/data/notes/34 //为 AJAX 调用返回 JSON http:// someurl.com/myapp/view/notes/34/compact //为 AJAX 调用返回 HTML

这里有一些问题:

  1. 是否有任何语法规则可以推荐以保持标准化的 REST 语法(例如,如果我使用需要一些标准的前端 javascript 库)。

  2. 是否有任何语法规则可以推荐以改善 SEO,例如使用复数名称或单数名称、使用名词/动词、顺序等。

  3. 如果您要发送许多位键/值,例如为了维护页面上的状态,您会怎么做,您是否只是在路由 url 的末尾发送 URL 变量,如下所示:http ://someurl.com /myapp/page/note/34?searchOpen=true&sortColumn=city&order=asc

  4. 我需要在 index.php 中捕获所有 URL 调用的 .htaccess 代码是什么,这样我就可以处理 URL,而无需将浏览器发送到子目录等。

4

1 回答 1

5

首先,看看 Symfony 路由器,因为它基本上是独立的:

http://symfony.com/doc/current/components/routing/introduction.html

您可能还会发现这两个视频很有趣:

http://www.youtube.com/watch?v=XzgCzjMdvRE

http://www.youtube.com/watch?v=aoiaSkRCObY

是否有任何语法规则可以推荐以改善 SEO,例如使用复数名称或单数名称、使用名词/动词、顺序等。

使用最自然的。例子:

  • GET /posts是帖子列表。
  • GET /posts/2或者GET /posts:2对于同一帖子列表的第 2 页来说似乎很自然。
  • GET /posts/1-3或者GET /posts:1-3如果您使用无限滚动,对于同一帖子列表的第 1 到 3 页来说似乎很自然。
  • GET /post/1或者GET /post:1可能是帖子 ID 1。
  • PUT /post/1或者PUT /post:1会更新帖子 ID 1。
  • GET /post或者 GET /post/new或者GET /post:new对于新的帖子编辑器来说是很自然的。
  • POST /post或者POST /post/new或者POST /post:new会很自然地实际插入新帖子。
  • 等等

如果您要发送许多位键/值,例如为了维护页面上的状态,您会怎么做,您是否只是在路由 url 的末尾发送 URL 变量,如下所示:http ://someurl.com /myapp/page/note/34?searchOpen=true&sortColumn=city&order=asc

恕我直言,对这种类型的事物使用查询字符串。其他 url 和路由规则很快就会变得非常混乱。(有关事情变得多么混乱的史诗示例,请查看与 ANDed 和 ORed 分类法相关的 WordPress 重写逻辑。)

我需要在 index.php 中捕获所有 URL 调用的 .htaccess 代码是什么,这样我就可以处理 URL,而无需将浏览器发送到子目录等。

通常:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php [L]
于 2013-06-07T16:24:40.107 回答