目录
PATHINFO
URL 重写
如何生成 URL 地址
更复杂的自定义 URL 地址
首页 php教程 php手册 FleaPHP 开发指南

FleaPHP 开发指南

Jun 21, 2016 am 09:06 AM
example htaccess pathinfo url

开发指南

FleaPHP 应用程序通过分析 URL 地址来确定要执行的控制器及动作,以及传递给动作方法的参数。

默认情况下,FleaPHP 应用程序通过

<code>http://www.example.com/index.php?controller=test&action=benchmark&source=1</code>
登录后复制

这样的 URL 地址来访问应用程序的每一个功能。但有时候你希望 URL 地址能够更好看一点,例如上面的地址变为:

<code>http://www.example.com/index.php/test/benchmark/source/1</code>
登录后复制

或者

<code>http://www.example.com/test/benchmark/source/1</code>
登录后复制

要实现上述两种效果,必须借助 FleaPHP 对 PATHINFO 模式和 URL 重写的支持。



PATHINFO

要使用 PATHINFO 模式来运行应用程序,只需要简单的设置应用程序选项 urlMode 为 URL_PATHINFO 就可以了。

采用 PATHINFO 时,对于相对地址,必须改写为使用 / 开头的绝对地址。例如 css/style.css 应该写为 /css/style.css,而 images/banner.jpg 要写为 /images/banner.jpg。除了图片、CSS 样式表和 JavaScript 文件外,对网站其他文件的引用也要使用绝对地址。
这个要求同样适用于 URL 重写模式。



URL 重写

URL 重写比起 PATHINFO 来复杂得多,而且有一些限制。

  • 目前 FleaPHP 对 URL 重写的支持还很简单,与 PATHINFO 相比仅仅是从 URL 地址中隐藏了 index.php 入口文件的名字;
  • URL 重写需要 Apache 的 mod_rewrite 模块支持(IIS 用户可以使用一些商业软件);
  • 必须配置 Apache 或者 .htaccess 文件,以便启用 mod_rewrite 模块;
  • 对于复杂的目录结构,你不得不编写更多的重写规则。

好了,希望上面的话没有吓到你。那么看看最简单的情况:

<code>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ /index.php/$1 [L]</code>
登录后复制

上面的重写规则很简单,首先是启用 URL 重写。然后是判断请求的文件是否已经存在。只有当请求的文件不存在时才进行 URL 重写。

把上述内容保存到应用程序根目录,文件名为 .htaccess。

很奇怪,在 Windows 资源管理器里面不允许你建立 .htaccess 这样只有扩展名的文件。所以你必须先将文件保存为其他名字,例如 app.htaccess。然后进入命令行窗口(通过开始菜单运行 cmd.exe 程序即可),输入 ren app.htaccess .htaccess 命令来对文件改名。

最后,修改应用程序设置的 urlMode 选项为 URL_REWRITE。



如何生成 URL 地址

在 FleaPHP 应用程序中,我们总是应该使用 url() 函数和 FLEA_Controller_Action::_url() 方法来生成 URL 地址。这样不管 urlMode 选项怎么设置,我们都可以确保应用程序生成可以工作的 URL 地址。

例如 url('test', 'benchmark', array('source' => 1)) 这样的调用,在不同 urlMode 设置下,生成的 URL 地址也不同。

这种特性,可以避免因为应用程序修改了 urlMode 选项,而导致需要手工替换全部 URL 地址的问题。



更复杂的自定义 URL 地址

正在开发的 URL 路由功能,可以让应用程序获得完全的自定义 URL。例如

<code>http://www.example.com/index.php?controller=article&action=view&article_id=123</code>
登录后复制

可以用下面的地址来代替。不但好看,而且便于搜索引擎索引文件。

http://www.example.com/article/123
登录后复制



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP函数介绍—get_headers(): 获取URL的响应头信息 PHP函数介绍—get_headers(): 获取URL的响应头信息 Jul 25, 2023 am 09:05 AM

PHP函数介绍—get_headers():获取URL的响应头信息概述:在PHP开发中,我们经常需要获取网页或远程资源的响应头信息。PHP函数get_headers()能够方便地获取目标URL的响应头信息,并以数组形式返回。本文将介绍get_headers()函数的用法,以及提供一些相关的代码示例。get_headers()函数的用法:get_header

怎样透过几个步骤获取您的 Steam ID? 怎样透过几个步骤获取您的 Steam ID? May 08, 2023 pm 11:43 PM

现在很多热爱游戏的windows用户都进入了Steam客户端,可以搜索、下载和玩任何好游戏。但是,许多用户的个人资料可能具有完全相同的名称,这使得查找个人资料或什至将Steam个人资料链接到其他第三方帐户或加入Steam论坛以共享内容变得困难。为配置文件分配了一个唯一的17位id,它保持不变,用户无法随时更改,而用户名或自定义URL可以更改。无论如何,一些用户并不知道他们的Steamid,这对于了解这一点非常重要。如果您也不知道如何找到您帐户的Steamid,请不要惊慌。在这篇文

为什么NameResolutionError(self.host, self, e) from e,怎么解决 为什么NameResolutionError(self.host, self, e) from e,怎么解决 Mar 01, 2024 pm 01:20 PM

报错的原因NameResolutionError(self.host,self,e)frome是由urllib3库中的异常类型,这个错误的原因是DNS解析失败,也就是说,试图解析的主机名或IP地址无法找到。这可能是由于输入的URL地址不正确,或者DNS服务器暂时不可用导致的。如何解决解决此错误的方法可能有以下几种:检查输入的URL地址是否正确,确保它是可访问的确保DNS服务器可用,您可以尝试在命令行中使用"ping"命令来测试DNS服务器是否可用尝试使用IP地址而不是主机名来访问网站如果是在代理

如何在Java中使用URL编码和解码 如何在Java中使用URL编码和解码 May 08, 2023 pm 05:46 PM

使用url进行编码和解码编码和解码的类java.net.URLDecoder.decode(url,解码格式)解码器.解码方法。转化成普通字符串,URLEncoder.decode(url,编码格式)将普通字符串变成指定格式的字符串packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net.URLEncoder

html和url的区别是什么 html和url的区别是什么 Mar 06, 2024 pm 03:06 PM

区别:1、定义不同,url是是统一资源定位符,而html是超文本标记语言;2、一个html中可以有很多个url,而一个url中只能存在一个html页面;3、html指的是网页,而url指的是网站地址。

Scrapy优化技巧:如何减少重复URL的爬取,提高效率 Scrapy优化技巧:如何减少重复URL的爬取,提高效率 Jun 22, 2023 pm 01:57 PM

Scrapy是一个功能强大的Python爬虫框架,可以用于从互联网上获取大量的数据。但是,在进行Scrapy开发时,经常会遇到重复URL的爬取问题,这会浪费大量的时间和资源,影响效率。本文将介绍一些Scrapy优化技巧,以减少重复URL的爬取,提高Scrapy爬虫的效率。一、使用start_urls和allowed_domains属性在Scrapy爬虫中,可

SpringBoot多controller如何添加URL前缀 SpringBoot多controller如何添加URL前缀 May 12, 2023 pm 06:37 PM

前言在某些情况下,服务的controller中前缀是一致的,例如所有URL的前缀都为/context-path/api/v1,需要为某些URL添加统一的前缀。能想到的处理办法为修改服务的context-path,在context-path中添加api/v1,这样修改全局的前缀能够解决上面的问题,但存在弊端,如果URL存在多个前缀,例如有些URL需要前缀为api/v2,就无法区分了,如果服务中的一些静态资源不想添加api/v1,也无法区分。下面通过自定义注解的方式实现某些URL前缀的统一添加。一、

nginx怎么配置url重定向 nginx怎么配置url重定向 May 12, 2023 am 10:31 AM

本文系统:centos6.5_x64三台主机:nginx主机,hostname:master.lansgg.comip:192.168.10.128apache主机,hostname:client1.lansgg.comip:192.168.10.129一、nginx地址重定向二、nginx反向代理1、地址重定向:是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网址,转成较短的网址。因为当要传播某网站时,常常因为网址太长,不好记忆;又有可能因为换了网路的免费网页空间,网

See all articles