我正在讨论使用以下两个选项之一路由我的请求:
选项1:简单的捕获路由,使用Mod-Rewrite和漏斗写入$_GET路由到index.php进行加载...
#default routing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([0-9]+)?$ index.php?rt=blog¶ms=$1 [L,QSA]
// ..more custom routes, and then a default route
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/(.*)?$ index.php?rt=$1/$2¶ms=$3 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
选项2:简单地将请求路由到Front Controller,并创建一个PHP路由类来处理路由...
#default routing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
/* --- on front controller, process $_GET['rt'] --- */
Run Code Online (Sandbox Code Playgroud)
在一天结束时,哪个会运行得更快,更容易保护,更容易维护?
还有其他想法吗?
注意:我没有运行已知的框架.我正在构建自己的MVC模式来学习它.
Mar*_*c W 16
通常在MVC框架中,这种事情通常最好由前端控制器(命名index.php等)处理.您使用mod_rewrite然后隐藏index.php所有URL,以便您的用户看到漂亮的干净路径.
它在PHP中比在Apache的重写指令中更容易处理.PHP更灵活,更易于编写/理解.我不确定我是否曾经看到mod_rewrite被用作任何网络框架的唯一路由引擎,现在我想到了它.
您的第二段代码是重写指令的方法.