phpmod_rewrite重写模块技术

phpmod_rewrite重写模块技术

ID:18793793

大小:46.50 KB

页数:17页

时间:2018-09-24

phpmod_rewrite重写模块技术_第1页
phpmod_rewrite重写模块技术_第2页
phpmod_rewrite重写模块技术_第3页
phpmod_rewrite重写模块技术_第4页
phpmod_rewrite重写模块技术_第5页
资源描述:

《phpmod_rewrite重写模块技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、PHPmod_rewrite重写模块技术Apache以其极高的性价比让越来越多的公司组织选择它作为服务器。其中它有一个很有用的功能就是mod_rewrite模块,一个可将用户请求的URI根据特定规则转换的模块。这篇文章将引领你学习rewrite规则,正则表达,rewrite条件,以及提供了一系列的例子。首先,我假设你已经懂得URI重写对你网站的意义为前提,如果对这一方面你想了解得更多,这里我向你推荐mod_rewrite:ABeginner’sGuidetoURLRewriting这本书。你可以从书中找到关于这方面得更多信息。测试服务器安装一些服务器没有开启mod_rewrite模

2、块(服务器默认关闭),你可以键入一行PHP代码来确定你的服务器是否已经开启mod_rewrite模块:phpinfo();在浏览器运行这段代码,找到ApacheModulessection,如果mod_rewrite没有出现在其列表中,那么你就需要通知你的服务商开启mod_rewrite服务,或者..换另外一个好的服务商。大多数服务商都会开启mod_rewrite模块,所以你很容易找到。mod_rewrite的魔力简单举例:创建三个文件,分别命名为test.html,test.php和.htaccesstest.html输入:

ThisistheHTMLfile.

t

3、est.php输入:

Thisisthephpfile.

.htaccess输入:RewriteEngineonRewriteRule^/?test.html$test.php[L]将以上三个文件放test测试文件夹下,在浏览器录入:http://www.example.com/test/test.html在浏览器中将www.example.com替换成你自己的域名。如果运行结果显示“ThisisthePHPfile”,那么运行成功,如果结果显示“ThisistheHtmlfile”,那么肯定是哪里出了问题,请你再仔细检查下。如果你测试成功,你是否发现了我们录入了t

4、est.html的文件名,确执行了test.php文件,是的,你已经初识了mod_rewrite的神奇。mod_rewrite正则表达式现在我们可以重写URLs了!设想我们有一个显示城市信息的网站。根据URI选择城市:http://www.example.com/display.php?country=USA&state=California&city=San_Diego这个URL太长并且对用户也不友好,我们更希望写成这样:http://www.example.com/USA/California/San_Diego我们需要告诉Apache新的URL会根据一定的格式转化成这样,为了

5、让display.php明白查询的字符,所以我们将用到正则表达式告诉mod_rewrite匹配我们的URLs。如果你对正则表达式不太熟悉,许多网站提供了优秀的教程供你学习。在本文的末尾,我也会列举出比较好的参考网址。如果你还是不能明白我所讲述的,那么我建议你看看后面链接中的前两篇。一个最常用的正则就是(.*)。它含有两个元素:一是“点”,表示任意字符;二是“星”,表示以前的全部字符。所以(.*)会匹配{REQUEST_URI}的所有字符。{REQUEST_URI}是URL中出去域名以及“?”符号的所有查询字符,也是Apache重写技术尝试匹配的字符。包裹在正则表达式中的元素存放在“

6、原子”内,它是在规则范围内允许被匹配的变量,所以以上正则存储了USA/California/San_Diego在“原子”中,为了解决我们的问题,我们需要三个“原子”,他们可以用左斜杠“/”进行分隔,所以正则表达式成了:(.*)/(.*)/(.*)以上正则,在{REQUEST_URI}中通过两个“/”的分割存储了三个值,为了解决我们具体问题,我们得加一点限制――毕竟,第一个和最后一个原子可以匹配任何字符。开始,我们可以添加一些特殊的字符,比如表示正则“开始”或者“结束”,“^”字符表示正则的开始而“$”表示正则的结束。^(.*)/(.*)/(.*)$这个正则表示整个字符串将全部匹配,

7、除去之前后者之后,没有任何例外。但是,这个方法仍然匹配的范围太广,我们将匹配的字符按照原子形式存放,然后通过他们形成查询字符串,所以我们必须信任我们所匹配的字符。用(.*)匹配字符串,由于允许了太多字符,所以会存在潜在的安全隐患,引用不当会使mod_rewrite运行出故障。为了避免一些不必要的麻烦,让我们更改一下我们的原子正则,让其更加准确的匹配我们允许的字符。因为这些原子代表了地区地名,所以我们完全可以用A到Z的大小写来表示他们,另外因为地名之间有空格,所以下划线

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。