用PHP正道路由页面请求(Routing page requests with PHP the ri

2019-06-27 01:44发布

我需要知道的术语和执行的网站导航“正确”的最佳做法? 这样,类似于你如何计算器的路线,当你问通过URL一个问题:

“http://stackoverflow.com/questions/ask”

凡与我的PHP编程知识我可能会像这样的代码吧:

“http://stackoverflow.com/index.php?p=questions&act=ask”

希望你明白我的意思。 我想知道的页面导航和请求/响应处理的这种方法来看,如果可能的最佳实践,限制或其他任何我需要记住使用此标准/方法设计一个Web应用程序时。 我也根本不知道这是所有PHP或一些网络后端的ASP或Ruby或者你有什么编码完成,所以我已填充标签与我的猜测。

Answer 1:

大多数MVC框架使用的模式是前端控制器在路由器上调用。 前端控制器通常是index.php在Web根。 接下来,是不是现有的文件(如JS,CSS和图像资产),所有的请求需要发送到该控制器。 在Apache中,你可以做到这一点的mod_rewrite :

RewriteRule ^index\.php$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L,QSA]

然而,在Apache的2.5推荐的方法是使用FallbackResource :

FallbackResource index.php

IIS有类似的功能 ,如果这就是你使用的是什么。

index.php ,您可以访问最初请求的URL $_SERVER['REQUEST_URI'] 你应该包括你的路由器(这应该是外面的Web根目录),并与请求的URI调用它。 例:

require '../router.php';

$router = new Router();
$router->process($_SERVER['HTTP_METHOD'], $_SERVER['REQUEST_URI'], $_GET, $_POST);

然后你的路由器可以找到相应的控制器将请求路由到。 了解更多关于的MVC框架 ,并研究了一些 例子 ,以更好地理解他人如何实现它。



Answer 2:

他们最有可能使用相同的方法,你所描述(嵌入导航变量)的URL中,但它正在做“引擎盖下”。

它允许你提交的URL像这样的机制被称为现代重写。 它使用在URL中的变量和正则表达式的组合重新代表URL给最终用户以更加用户友好的方式。

更多信息: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

编辑:当然,这也适用于对代码Apache网络服务器上运行。 有可能是其他网络服务器,如IIS类似的模块。

另外,你要知道mod_rewrite已PHP的范围之外。 相反,它是真正的Apache服务器的指令,它被调用之前PHP甚至开始发挥作用。



Answer 3:

我目前正在开发它的目标是在极端高性能 PHP路由器。 你或许可能要看一看:

https://github.com/c9s/Pux

PUX为48.5x快于静态路由调度symfony的路由器,31X更快的正则表达式调度。 (安装PUX扩展)

PUX尽量不消耗计算时间动态地建立的所有路由(如Symfony的/路由)。 相反,PUX编译你的路线为纯PHP阵列缓存,编译后的路线可以从缓存非常快装。

随着PUX PHP扩展的支持,您可以载入并派遣1.5〜2倍比纯PHP PUX更快的路由。



文章来源: Routing page requests with PHP the right way