loo*_*ter 3 php apache mod-rewrite url-routing
我需要知道"正确"执行网站导航的术语和最佳做法吗?类似于stackoverflow在你通过url提出问题时如何路由你:
"http://stackoverflow.com/questions/ask"
根据我对PHP编程的了解,我可能会像这样编写代码:
"http://stackoverflow.com/index.php?p=questions&act=ask"
希望你明白我的意思.我想知道这种页面导航和请求/响应处理方法的术语,如果可能的话,在使用此标准/方法设计Web应用程序时需要记住的最佳实践,限制或其他任何内容.我甚至不知道这是用PHP还是用ASP或Ruby编写的一些网络后端完成的,或者你有什么,所以我用猜测填充了标签.
大多数MVC框架使用的模式是调用路由器的前端控制器.前端控制器通常index.php
位于Web根目录中.接下来,所有不适用于现有文件(如js,css和image资产)的请求都需要发送到此控制器.在apache中,您可以使用mod_rewrite执行此操作:
RewriteRule ^index\.php$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)
但是,Apache 2.5中推荐的方法是使用FallbackResource:
FallbackResource index.php
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
然后您的路由器可以找到适当的控制器来路由请求.阅读有关MVC框架的更多信息,并研究一些 示例以更好地了解其他人如何实现它.
归档时间: |
|
查看次数: |
5151 次 |
最近记录: |