fleaphp 应用程序通过分析 url 地址来确定要执行的控制器及动作,以及传递给动作方法的参数。
默认情况下,fleaphp 应用程序通过
http://www.example.com/index.php?controller=test&action=benchmark&source=1
这样的 url 地址来访问应用程序的每一个功能。但有时候你希望 url 地址能够更好看一点,例如上面的地址变为:
http://www.example.com/index.php/test/benchmark/source/1
或者
http://www.example.com/test/benchmark/source/1
要实现上述两种效果,必须借助 fleaphp 对 pathinfo 模式和 url 重写的支持。
要使用 pathinfo 模式来运行应用程序,只需要简单的设置应用程序选项 urlmode 为 url_pathinfo 就可以了。
采用 pathinfo 时,对于相对地址,必须改写为使用 / 开头的绝对地址。例如 css/style.css 应该写为 /css/style.css,而 images/banner.jpg 要写为 /images/banner.jpg。除了图片、css 样式表和 javascript 文件外,对网站其他文件的引用也要使用绝对地址。
这个要求同样适用于 url 重写模式。
url 重写比起 pathinfo 来复杂得多,而且有一些限制。
好了,希望上面的话没有吓到你。那么看看最简单的情况:
rewriteengine onrewritecond %{request_filename} !-frewriterule ^(.*)$ /index.php/$1 [l]
上面的重写规则很简单,首先是启用 url 重写。然后是判断请求的文件是否已经存在。只有当请求的文件不存在时才进行 url 重写。
把上述内容保存到应用程序根目录,文件名为 .htaccess。
很奇怪,在 windows 资源管理器里面不允许你建立 .htaccess 这样只有扩展名的文件。所以你必须先将文件保存为其他名字,例如 app.htaccess。然后进入命令行窗口(通过开始菜单运行 cmd.exe 程序即可),输入 ren app.htaccess .htaccess 命令来对文件改名。
最后,修改应用程序设置的 urlmode 选项为 url_rewrite。
在 fleaphp 应用程序中,我们总是应该使用 url() 函数和 flea_controller_action::_url() 方法来生成 url 地址。这样不管 urlmode 选项怎么设置,我们都可以确保应用程序生成可以工作的 url 地址。
例如 url('test', 'benchmark', array('source' => 1))
这样的调用,在不同 urlmode 设置下,生成的 url 地址也不同。
这种特性,可以避免因为应用程序修改了 urlmode 选项,而导致需要手工替换全部 url 地址的问题。
正在开发的 url 路由功能,可以让应用程序获得完全的自定义 url。例如
http://www.example.com/index.php?controller=article&action=view&article_id=123
可以用下面的地址来代替。不但好看,而且便于搜索引擎索引文件。
http://www.example.com/article/123
新闻热点
疑难解答