- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在考虑使用以下两个选项之一来路由我的请求:
选项 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]
选项 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'] --- */
归根结底,哪个会运行得更快、更容易保护并且更容易维护?
还有其他想法吗?
注意:我没有运行已知的框架。我正在构建自己的 MVC 模式来学习它。
最佳答案
通常在 MVC 框架中,这种事情通常最好由前端 Controller (名为 index.php
或类似名称)处理。您使用 mod_rewrite 然后从所有 URL 中隐藏 index.php
,以便您的用户看到漂亮干净的路径。
它在 PHP 中也比在 Apache 的重写指令中更容易处理。 PHP 更灵活,更易于编写/理解。现在我想起来了,我不确定我是否见过 mod_rewrite 被用作任何 Web 框架的唯一路由引擎。
您的第二段代码是实现重写指令的方法。
关于php - Mod-Rewrite 还是 PHP 路由器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1868154/
我有一个使用moodle库的项目。由于客户端请求,我不得不将 URL 从moodle.example.com 更改为learn.example.com。 我认为这将是一个简单的更改,但唉,moodle
目前,在我的生产服务器上,我设置了如下的入站规则,它可以满足我的所有要求。 入站规则如下。 Match URL section Requested URL: Matches the Pattern U
我正在 Heroku cedar 堆栈上运行一个 PHP 应用程序。有没有办法设置 URL 重写规则?我曾希望在 .htaccess 文件中执行此操作,但在此只能识别访问控制指令。 我看到 Ruby
我正在尝试在运行 CentOS 6.4 和 NginX 1.8 的 VPS 上设置 Laravel 框架。我可以让其他一切都完美地工作,除了我无法让更清晰的 URL 工作,比如使用“website.c
我刚刚从 IIS6 svr2003 迁移到 IIS7.5 服务器 2008r2 并安装了 url 重写。这一切都很好。有问题的网站很大,并且在 .net 2 集成管道下运行。目前无法在 .net 4
首先是一些无聊的进口: import Relation.Binary.PropositionalEquality as PE import Relation.Binary.HeterogeneousE
我正在 IIS 6 上构建一个 Drupal CMS 网站,并使用 ISAPI Rewrite 3 来提高 url 的可读性。我的问题是我有一个位于 Drupal 站点内的虚拟目录,但它指向 Drup
每个网络应用程序/上下文有没有办法为该特定网络应用程序指定重写文件?我看到当前工作的唯一方法是在您启动它时通过命令行。我在想可能是 override.xml 文件中的设置,甚至是上下文 xml 文件中
我想为基于 Struts2 的应用程序(目前在开发环境中)重写 URL。我搜索了它并找到了 Tuckey URL Rewrite 并在我的项目中进行了设置。现在我希望我的登录 url 当前为 http
我正在尝试使用 IIS URL Rewrite 2.0在 Windows 8.1 上使用 IIS 8.5。根据 Accessing URL Parts from a Rewrite Rule , Fo
我们有以下重写规则: RewriteRule ^([A-Za-z0-9\_]+)$ index.php?rewrite=$1 [L,QSA] 我们想知道是否有一种方法可以让 ?rewrite=$1
我们有以下重写规则: RewriteRule ^([A-Za-z0-9\_]+)$ index.php?rewrite=$1 [L,QSA] 我们想知道是否有一种方法可以让 ?rewrite=$1
我从 Web 平台安装程序安装 URL Rewrite。没有添加规则。然后,当我访问网站 url 时,它返回 503 代码并且应用程序池已停止。当我从控制面板中卸载 URL 重写模块时,它工作正常。
假设我在 example.com 上托管了一个站点,现在我希望我的每个注册用户都获得一个个性化的子域,例如 Alice 通常应该将 alice.example.com 作为她的子域。而实际上 alic
我正在按照Jetty文档示例在嵌入式Jetty服务器中实现一个简单的重写规则。 我想将对/admin/的请求重写为/admin.html。 目前,如果我请求/admin/,则会收到404错误,找不到/
我有这个重写规则 RewriteEngine On RewriteBase /location/ RewriteRule ^(.+)/?$ index.php?franchise=$1 假设要更改此
Closed. This question is off-topic。它当前不接受答案。 想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。 7年前关
我有两个 apache 服务器都具有相同的设置,我克隆了 apache 配置文件,并且只更改了 ServerName 部分。当我键入 mysite.com/somestuff 它应该重写为 index
我想即时创建文件夹,但让我看起来像是在使用 mod_rewrite 即时创建子域。例如 使用 PHP 创建“john”文件夹 www.example.com/john/ 然后能够访问我放在那里的任何内
如何删除main/中的http://domain/main/about 因此该网址将类似于http://domain/about 谢谢 最佳答案 好吧,在没有更多详细信息的情况下,您可以尝试执行以下操
我是一名优秀的程序员,十分优秀!