网站运营
位置:首页>> 网站运营>> Apache的ReWrite的应用mod_rewrite模块使用

Apache的ReWrite的应用mod_rewrite模块使用

 来源:asp之家 发布时间:2010-04-04 18:44:00 

标签:apache,mod_rewrite,url,rewrite,虚拟主机,服务器

Apache的mod_rewrite是提供了强大URL操作的杀手级的模块,可以实现几乎所有你梦想的URL操作类型,其代价是你必须接受其复杂性,因为mod_rewrite的主要障碍就是初学者不容易理解和运用,即使是Apache专家有时也会发掘出mod_rewrite的新用途。
换句话说:对mod_rewrite,或者是打退堂鼓永不再用,或者是喜欢它并一生受用。上,一个资源会拥有多个URL,在实际应用和发布中应该被使用的是规范的URL,其他的则是简写或者是内部使用的。无论用户在请求中使用什么形式的URL,他最终看见的都应该是规范的URL。
说明:
在有些网站服务器上,一个资源会拥有多个URL,在实际应用和发布中应该被使用的是规范的URL,其他的则是简写或者是内部使用的。无论用户在请求中使用什么形式的URL,他最终看见的都应该是规范的URL。
方案:
对所有的不规范的URL执行一个外部的HTTP重定向,以改变它在浏览器地址栏中的显示及其后继的请求。下例中的规则集用规范的/u/user替换/~user,并修正了/u/user所遗漏的后缀的斜杠。
代码:
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
规范的主机名
说明:
...
方案:
代码:
RewriteCond % !^fully.qualified.domain.name [NC]
RewriteCond % !^$
RewriteCond % !^80$
RewriteRule ^/(.*) http://fully.qualified.domain.name:%/$1 [L,R]
RewriteCond % !^fully.qualified.domain.name [NC]
RewriteCond % !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]
被移动过的DocumentRoot
说明:
通常,网站服务器的DocumentRoot直接对应于URL"/",但是,它常常不是处于最高一级,而可能只是众多数据池中的一个实体。比如,在Intranet站点中,有/e/www/(WWW的主页)、/e/sww/ (Intranet的主页)等等,而DocumentRoot指向了/e/www/,则必须保证此数据池中的所有内嵌的图片和其他元素对后继请求有效。
方案:
只须重定向URL /到/e/www/即可。这个方案看起来很简单,但只是有了mod_rewrite模块的支持,它才简单,因为传统的URL Aliases机制(由mod_alias及其相关模块提供)只是作了一个前缀匹配,DocumentRoot是一个对所有URL的前缀,因而无法实现这样的重定向。而用mod_rewrite的确很简单:
代码:
RewriteEngine on
RewriteRule ^/$ /e/www/ [R]
后缀斜杠的问题
说明:
每个网管对引用目录后缀斜杠的问题都有一本苦经,如果遗漏了,服务器会产生一个错误,因为如果请求是/~quux/foo而不是/~quux/foo/,服务器会去找一个叫foo的文件,而它是一个目录,所以就报错了。事实上,大多数情况下,它自己会试图修正这个错误,但是有时候需要你手工纠正,比如,在重写了许多CGI脚本中的复杂的URL以后。
方案:
解决这个微妙问题的方案是让服务器自动添加后缀的斜杠。对此,必须使用一个外部的重定向,使浏览器正确地处理后继的对诸如图片的请求。如果仅仅作一个内部的重写,可能只对目录页面有效,而对内嵌有使用相对URL的图片的页面则无效,因为浏览器有请求内嵌目标的可能。比如,如果不用外部重定向,/~quux/foo/index.html页面中对image.gif的请求,其结果将是/~quux/image.gif!。
所以,应该这样写:
代码:
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo$ foo/ [R]
又懒又疯狂的做法是把这些写入其宿主目录中的顶级.htaccess中,但是须注意,如此会带来一些处理上的开销。
代码:
RewriteEngine on
RewriteBase /~quux/
RewriteCond % -d
RewriteRule ^(.+[^/])$ $1/ [R]

0
投稿

猜你喜欢

  • 在 UCHome 家园,用户可以根据不同的兴趣创建不同的群组(例如:“3D动画片爱好者”之类的群组),群组可以使群组成员产生真实的交互,增加
  • Godaddy用户如何使用File Manager删除一个目录呢?整理了详细的教程供您参考。1、 登陆你的Account Manager.
  • DNS(Domain Name System)即域名系统是历史悠久的方法,它可以为具有IP地址的计算机分配域名,使计算机拥有字符型名称,如如
  • 在这个被Ajax技术统治的互联网时代,很多Ajax程序都会在异步读取数据的同时,显示一个正在读取或Loading的动画。今天彬Go要向大家推
  • 本文中落叶详细分析下PHPCMS2008中一直存在的并且在sp4最终版中仍然存在的严重甚至低级的问题及一些使用中遇见的“见鬼”的问题。A、低
  • 二、工作环境本文假设用户希望在企业网环境中创建一个电子邮件服务器,为本企业用户提供邮件服务。该服务器拥有一个合法的IP地址202.99.11
  • 自从7、8月份以来,对于新上线的网站来说,可能把百度恨得咬牙切齿——因为百度的算法有所调整,尤其是对新站,由以前的对新站宠爱有加变为隔离审查
  • 众所周知,服务器是计算机网络中最重要的资源,对其安全要求很高。如果我们正在运行的服务器没有进行正确的谨慎配置,就可能将大量的有用信息泄漏出去
  • 组策略是管理员为用户和计算机定义并控制程序、网络资源及操作系统行为的主要工具。通过使用组策略可以设置各种软件、计算机和用户策略。例如,可使用
  • 康盛创想(Comsenz)推出的UCenter Home强调只提供用户愿意关注的信息,在信息噪音方面有着多级筛选控制。每一个人都可以将自己的
  • 下面就是几个建议,希望广大站长朋友们在购买网站时用得上。1、时刻记住你要购买的网站必须是只需要你极少后续维护工作的网站。这是构筑你“网上实业
  • Internet/Intranet的网络应用过程中,Web服务器的建设必不可少,而国内的企事业单位在组网方案中多考虑向Intranet靠拢。
  • 有Godaddy主机用户咨询有关Cron的一些问题,今天我们就来一起讨论下吧,其实Cron是一个计划任务的标准的Linux特征,叫做&quo
  • 还记得诺基亚的成名广告语吗——“科技以人为本”。您可千万别小看这句话,西方科技之所以如此发达,很大程度上就源自于“以人为本”理念的贯彻。小到
  • 最近又开始玩PHP,研究起dedecms...这不正想搞搞导航站,想试试用dedecms这个内容管理系统实现其功能,终于早上配置好了php平
  • 通过下面 10 步来保护 IIS:1.为IIS 应用程序和数据专门安装一个NTFS 设备。如果有可能,不要允许IUSER(或其它任何匿名用户
  • 上次我们讲了proftp的基本安装,由于我们后面有关于mysql和quota的设置,所以编译的时候把相应的模块都编译进去了,如果你不需要my
  • 足球可以功夫,熊猫可以功夫,奥运网站为什么不能功夫?在华中师大,一群自称“13侠”的大学生办起了一个以奥运为主题,却颇有武侠味的“奥林客栈”
  • 北京时间11月3日消息,千橡互动集团董事长兼首席执行官陈一舟今日做客腾讯科技互联网大会访谈室时表示,公司发展重心仍然保持在人人网上。持续在较
  • 1:“曾经有一个很好的网站摆在我的面前,可是我没有好好维护,等到失去的时候才追悔莫及,人世间最痛苦的事情莫过于此。如果上天能够给我一个好站,
手机版 网站运营 asp之家 www.aspxhome.com