- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
apache的rewrite
apache的rewrite
学习 Apache mod_rewrite 13 例
Apache 以其极高的性价比让越来越多的公司组织选择它作为服务器。其中它有一个很有用的功能就是mod_rewrite模块,一个可将用户请求的URI根据特定规则转换的模块。
这篇文章将引领你学习rewrite 规则,正则表达,rewrite条件,以及提供了一系列的例子。
首先,我假设你已经懂得URI 重写对你网站的意义为前提,如果对这一方面你想了解得更多,这里我向你推荐 mod_rewrite: A Beginner’s Guide to URL Rewriting 这本书。你可以从书中找到关于这方面得更多信息。
测试服务器安装
一些服务器没有开启mod_rewrite模块(服务器默认关闭),你可以键入一行PHP代码来确定你的服务器是否已经开启mod_rewrite模块:
phpinfo();
在浏览器运行这段代码,找到Apache Modules section,如果mod_rewrite没有出现在其列表中,那么你就需要通知你的服务商开启mod_rewrite服务,或者..换另外一个好的服务商。大多数服务商都会开启mod_rewrite模块,所以你很容易找到。
mod_rewrite的魔力
简单举例:创建三个文件,分别命名为 test.html,test.php和.htaccess
test.html 输入:
h1This is the HTML file./h1
test.php输入:
h1This is the php file./h1
.htaccess输入:
RewriteEngine on
RewriteRule ^/?test\.html$ test.php [L]
将以上三个文件放test测试文件夹下,在浏览器录入:
/test/test.html
在浏览器中将 替换成你自己的域名。如果运行结果显示“This is the PHP file”,那么运行成功,如果结果显示“This is the Html file”,那么肯定是哪里出了问题,请你再仔细检查下。
如果你测试成功,你是否发现了我们录入了test.html的文件名,确执行了test.php文件,是的,你已经初识了mod_rewrite的神奇。
mod_rewrite 正则表达式
现在我们可以重写URLs了!设想我们有一个显示城市信息的网站。根据URI选择城市:/display.php?country=USA state=Californiacity=San_Diego
这个URL太长并且对用户也不友好,我们更希望写成这样:
/USA/California/San_Diego
我们需要告诉Apache新的URL会根据一定的格式转化成这样,为了让display.php明白查询的字符,所以我们将用到正则表达式告诉mod_rewrite匹配我们的URLs。如果你对正则表达式不太熟悉,许多网站提供了优秀的教程供你学习。在本文的末尾,我也会列举出比较好的参考网址。如果你还是不能明白我所讲述的,那么我建议你看看后面链接中的前两篇。
一个最常用的正则就是(.*)。它含有两个元素:一是“点”,表示任意字符;二是“星”,表示以前的全部字符。所以(.*)会匹配{REQUEST_URI}的所有字符。{REQUEST_URI}是URL中出去域名以及“?”符号的所有查询字符,也是Apache 重写技术尝试匹配的字符。
包裹在正则表达式中的元素存放在“原子”内,它是在规则范围内允许被匹配的变量,所以以上正则存储了USA/California/San_Diego在“原子”中,为了解决我们的问题,我们需要三个“原子”,他们可以用左斜杠“/”进行分隔,所以正则表达式成了:
(.*)/(.*)/(.*)
以上正则,在{REQUEST_URI}中通过两个“/”的分割存储了三个值,为了解决我们具体问题,我们得加一点限制――毕竟,第一个和最后一个原子可以匹配任何字符。
开始,我们可以添加一些特殊的字符,比如表示正则“开始”或者“结束”,“^”字符表示正则的开始而“$”表示正则的结束。
^(.*)/(.*)/(.*)$
这个正则表示整个字符串将全部匹配,除去之前后者之后,没有任何例外。
但是,这个方法仍然匹配的范围太广,我们将匹配的字符按照原子形式存放,然后通过他们形成查询字符串,所以我们必须信任我们所匹配的字符。用(.*)匹配字符串,由于允许了太多字符,所以会存在潜在的安全隐患,引用不当会使mod_rewrite运行出故障。
为了避免一些不必要的麻烦,让我们更改一下我们的原子正则,让其更加准确的匹配我们允许的字符。因为这些原子代表了地区地名,所以我们完全可以用A到Z的大小写来表示他们,另外因为地名之间有空格,所以
您可能关注的文档
- 2009年浙江省高职考试.doc
- 2009年潍坊市中等职业学校护理技术技能比赛规程.doc
- 2009年职称考试初级会计实务模拟试卷(二).doc
- 2009年诸城市兴贸玉米开发有限公司电工实际操作技术比赛实施方案.doc
- 2009注会——税法试题卷及答案解析.doc
- 2009经济法.doc
- 2009财管.doc
- 2010CPA财务成本管理.doc
- 2010guanli.doc
- 2010kjsw模拟1.doc
- 2024年中国钽材市场调查研究报告.docx
- 2024年中国不锈钢清洗车市场调查研究报告.docx
- 2024年中国分类垃圾箱市场调查研究报告.docx
- 2024年中国水气电磁阀市场调查研究报告.docx
- 2024年中国绿藻片市场调查研究报告.docx
- 2010-2023历年初中毕业升学考试(青海西宁卷)数学(带解析).docx
- 2010-2023历年福建厦门高一下学期质量检测地理卷.docx
- 2010-2023历年初中数学单元提优测试卷公式法(带解析).docx
- 2010-2023历年初中毕业升学考试(山东德州卷)化学(带解析).docx
- 2010-2023历年初中毕业升学考试(四川省泸州卷)化学(带解析).docx
最近下载
- 2022年优质服务基层行领域二— 医疗服务内容和水平0721新.pptx
- 图集标准资料:09S304卫生设备安装.pdf
- 人保车险中级核赔师考试题.docx
- 苏教版(2017)科学四年级上册 9 弹力(一).ppt VIP
- 2023-2024学年北京丰台初三(上)期中物理试卷(含答案).pdf
- 小学道德与法治一年级上册第6课《升国旗了》教学设计.pdf
- BS EN 544-2011 含矿物和_或合成增强剂的沥青瓦.产品规范和试验方法.pdf
- 人教版五年级上册数学第三单元《循环小数》教学课件.pptx
- 复旦大学国家社科基金课题申报讲座.ppt
- 科学苏教版四年级上册四上 9.弹力教案 .doc VIP
文档评论(0)