当前位置: 首页 > 知识 >正文

apache rewritebase(apache mod_rewrite)

Apache的mod_rewrite是一个杀手级模块,提供强大的URL操作,几乎可以实现你梦想的所有URL操作类型,代价是你必须接受它的复杂性。

成为mod_rewrite的主要障碍是初学者不容易理解和使用,甚至Apache专家有时也会发现mod_rewrite的新用途。

换句话说:对于mod_rewrite,要么你退出,再也不用,要么你喜欢,享受一生。

重写可以应用于以下几个方面或者解决以下几个问题:URL规划规范的URL描述:在一些网站服务器上,一个资源会有多个URL,在实际应用和发布中要使用标准化的URL。

其他是速记或内部使用。无论用户在请求中使用什么形式的URL,最终看到的都应该是标准化的URL。

方案:对所有非标准URL执行外部HTTP重定向,以改变其在浏览器地址栏中的显示及其后续请求。以下示例中的规则集由canonical /u/user /~user替换。

并更正了/u/user漏掉的后缀斜杠。

Code:/~ ([/]/? (.*) /u/$1/$2 [R] Rewritten by/([uge])/([/]) $/$1/$2/[r]

Moved DocumentRoot描述:通常网站服务器的DocumentRoot直接对应URL'/'但往往不在最高层,可能只是很多数据池中的一个实体。举个例子,

在Intranet站点中,有/e/www/(www的主页)、/e/sww/(Intranet的主页)等,而DocumentRoot指向/e/www/,

您必须确保此数据池中的所有嵌入图片和其他元素对后续请求有效。

方案:只需将URL/重定向到/e/www/。这个方案看起来很简单,但是只有mod_rewrite模块的支持才简单。

因为传统的URL别名机制(由mod_alias及其相关模块提供)只进行一个前缀匹配,而DocumentRoot是所有URL的前缀,所以不可能实现这样的重定向。

使用mod_rewrite非常简单:

Code:/$ Rewrite Engine on Rewriter /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]

集群网站的同类URL规划说明: 我们希望在一个Intranet集群网站中,对所有WWW服务器建立一个同类的一致性的URL规划,也就是,所有的URL(对单个服务器来说,

是本地的依赖于此服务器的!)是独立于服务器的!我们需要的是一个具有独立于服务器的一致性规划的WWW名称空间,即,URL不需要包含正确的物理的目标服务器,而由集群本身来自动定位物理的目标主机。

方案: 首先,目标服务器的信息来自(产生)于包含有用户、组以及实体的外部地图,其格式形如:

代码: user1 server_of_user1 user2 server_of_user2 :

这些信息被存入map.xxx-to-host文件。其次,如果URL在一个服务器上无效,需要引导所有的服务器重定向URL

代码: /u/user/anypath /g/group/anypath /e/entity/anypath

RewriteRule ^/([uge])/([^/]+)/?$ /$1/$2/.www/RewriteRule ^/([uge])/([^/]+)/([^.]+.+) /$1/$2/.www/$3\

移动宿主目录到不同的网站服务器说明: 通常,许多网管在建立一个新的网站服务器时,都会有这样的要求:重定向一个网站服务器上的所有宿主目录到另一个网站服务器。

结构化的宿主目录说明: 一些拥有几千个用户的网站通常都使用结构化的宿主目录规划,即,每个宿主目录位于一个带有特定前缀比如其用户名的第一个字符的子目录下。那么,

/~foo/anypath代表/home/f/foo/.www/anypath,而/~bar/anypath代表/home/b/bar/.www/anypath。

方案: 可以使用下列规则集来扩展~以达到上述目的。

代码: RewriteEngine on RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3

文件系统的重组说明: 这是一个不加雕琢的例子:一个大量使用针对目录的规则集以实现平滑观感,而从来不用调整数据结构的杀手级的应用。背景:net.sw从1992年开始,

存放了我收集的免费的有效的Unix软件包。它是我的爱好也是我的工作,因为在学习计算机科学的同时,业余时间还做了多年的系统和网络的管理员。每周我都需要整理软件,

因而建立了一个层次很深的目录结构来存放各种软件包:

代码: drwxrwxr-x 2 netsw users 512 Aug 3 18:39 Audio/drwxrwxr-x 2 netsw users 512 Jul 9 14:37 Benchmark/drwxrwxr-x 12 netsw users 512 Jul 9 00:34 Crypto/drwxrwxr-x 5 netsw users 512 Jul 9 00:41 Database/drwxrwxr-x 4 netsw users 512 Jul 30 19:25 Dicts/drwxrwxr-x 10 netsw users 512 Jul 9 01:54 Graphic/drwxrwxr-x 5 netsw users 512 Jul 9 01:58 Hackers/drwxrwxr-x 8 netsw users 512 Jul 9 03:19 InfoSys/drwxrwxr-x 3 netsw users 512 Jul 9 03:21 Math/drwxrwxr-x 3 netsw users 512 Jul 9 03:24 Misc/drwxrwxr-x 9 netsw users 512 Aug 1 16:33 Network/drwxrwxr-x 2 netsw users 512 Jul 9 05:53 office/drwxrwxr-x 7 netsw users 512 Jul 9 09:24 SoftEng/drwxrwxr-x 7 netsw users 512 Jul 9 12:17 System/drwxrwxr-x 12 netsw users 512 Aug 3 20:15 Typesetting/drwxrwxr-x 10 netsw users 512 Jul 9 14:08 X11/

1996年7月,我决定通过一个漂亮的Web接口公开我的收藏。ldquo;漂亮rdquo;是指提供一个接口以直接浏览整个目录结构,同时不对这个结构做任何改变- 甚至也不在结构顶部放置CGI脚本。

为什么呢?因为这个结构还要能够被FTP访问,而且我不希望其中有任何Web或者CGI的成分。

方案: 这个方案分为两个部分:第一个部分,是用于在空闲时间建立所有目录页面的CGI脚本集。我把它们放在/e/netsw/.www/,如下:

代码: -rw-r--r-- 1 netsw users 1318 Aug 1 18:10 .wwwacl drwxr-xr-x 18 netsw users 512 Aug 5 15:51 DATA/-rw-rw-rw- 1 netsw users

相关文章:
  • 华夏中证大数据产业ETF净值下跌6.14% 请保持关注_基金频道_证券之星
  • 5月18日基金净值:国投瑞银进宝灵活配置混合最新净值3.3166,跌1.4%
  • 4月19日基金净值:南方创业板ETF最新净值2.5828,跌0.63%
  • 5月26日基金净值:华泰柏瑞沪深300ETF最新净值3.8509,涨0.04%
  • 6月14日基金净值:嘉实稳惠6个月持有期混合A最新净值1.0389,涨0.09%
  • 易方达中证装备产业ETF净值下跌1.70% 请保持关注
  • 3月27日基金净值:兴全合丰三年持有混合最新净值0.7658,跌0.4%_基金频道_证券之星
  • 6月16日基金净值:易方达科融混合最新净值2.668,涨1.09%
  • 2023年依然是储能行业增长的大年 中美市场装机量有望连续翻番_基金频道_证券之星
  • 4月6日基金净值:广发诚享混合A最新净值0.7379,跌0.09%_基金频道_证券之星