Apache的ReWrite的应用mod_rewrite模块使用(3)
来源:asp之家 发布时间:2010-04-04 18:44:00
结构化的宿主目录
说明:
一些拥有几千个用户的网站通常都使用结构化的宿主目录规划,即,每个宿主目录位于一个带有特定前缀比如其用户名的第一个字符的子目录下。那么,/~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接口公开我的收藏。“漂亮”是指提供一个接口以直接浏览整个目录结构,同时不对这个结构做任何改变 - 甚至也不在结构顶部放置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 372982 Aug 5 16:35 LOGFILE
-rw-r--r-- 1 netsw users 659 Aug 4 09:27 TODO
-rw-r--r-- 1 netsw users 5697 Aug 1 18:01 netsw-about.html
-rwxr-xr-x 1 netsw users 579 Aug 2 10:33 netsw-access.pl
-rwxr-xr-x 1 netsw users 1532 Aug 1 17:35 netsw-changes.cgi
-rwxr-xr-x 1 netsw users 2866 Aug 5 14:49 netsw-home.cgi
drwxr-xr-x 2 netsw users 512 Jul 8 23:47 netsw-img/
-rwxr-xr-x 1 netsw users 24050 Aug 5 15:49 netsw-lsdir.cgi
-rwxr-xr-x 1 netsw users 1589 Aug 3 18:43 netsw-search.cgi
-rwxr-xr-x 1 netsw users 1885 Aug 1 17:41 netsw-tree.cgi
-rw-r--r-- 1 netsw users 234 Jul 30 16:35 netsw-unlimit.lst
其中的DATA/子目录包含了上述目录结构,即实在的net.sw,由rdist在需要的时候自动更新。第二个部分的遗留问题是:如何连接这两个结构为一个平滑观感的URL树?我希望在运行适当的CGI脚本而使用各种URL的时候,使用户感觉不到DATA/目录的存在。方案如下:首先,我把下列配置放在服务器上DocumentRoot中的针对目录的配置文件里,以重写公布的URL /net.sw/ 为内部路径 /e/netsw:
代码:
RewriteRule ^net.sw$ net.sw/ [R]
RewriteRule ^net.sw/(.*)$ e/netsw/$1
第一条规则是针对遗漏后缀斜杠的请求的!第二条规则才是真正实现功能的。接着,就是放在针对目录的配置文件/e/netsw/.www/.wwwacl中的杀手级的配置了:
代码:
Options ExecCGI FollowSymLinks Includes MultiViews
RewriteEngine on
# we are reached via /net.sw/ prefix
RewriteBase /net.sw/
# first we rewrite the root dir to
# the handling cgi script
RewriteRule ^$ netsw-home.cgi [L]
RewriteRule ^index.html$ netsw-home.cgi [L]
# strip out the subdirs when
# the browser requests us from perdir pages
RewriteRule ^.+/(netsw-[^/]+/.+)$ $1 [L]
# and now break the rewriting for local files
RewriteRule ^netsw-home.cgi.* - [L]
RewriteRule ^netsw-changes.cgi.* - [L]
RewriteRule ^netsw-search.cgi.* - [L]
RewriteRule ^netsw-tree.cgi$ - [L]
RewriteRule ^netsw-about.html$ - [L]
RewriteRule ^netsw-img/.*$ - [L]
# anything else is a subdir which gets handled
# by another cgi script
RewriteRule !^netsw-lsdir.cgi.* - [C]
RewriteRule (.*) netsw-lsdir.cgi/$1
阅读提示:
注意前半部分中的标志L(最后),和无对应项('-')
注意后半部分中的符号!(非),和标志C (链)
注意最后一条规则的全匹配模式
代码:
NCSA imagemap和Apache mod_imap
说明:
许多人都希望在从NCSA网站服务器向较现代的Apache网站服务器转移中实现平滑过渡,即希望老的NCSA imagemap程序能在Apache的较现代的mod_imap支持下正常运作。但问题在于,到处都是通过/cgi-bin/imagemap/path/to/page.map引用imagemap程序的连接,而在Apache下,应该写成/path/to/page.map。
方案:
使用全局规则在空闲时间去除所有这些请求的前缀:
代码:
RewriteEngine on
RewriteRule ^/cgi-bin/imagemap(.*) $1 [PT]


猜你喜欢
- 今天我们来学习Godaddy主机用户怎样使用Hosting Control Center的File Manager,来重命名托管帐户里的某文
- 来学习一下多次执行同一条命令的不同类型的循环。awk 脚本有三个主要部分:BEGIN 和 END 函数(都可选),用户自己写的每次要执行的函
- 问题公司将服务器迁移后,docker默认创建的doker0网桥与公司的外网网关产生冲突,导致外网无法连接服务器。解决方式修改默认的配置文件
- 本文主要给大家介绍了关于在centos 7安装Jenkins的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍:安装添加yu
- 远程网络连接在企业的信息化应用中是一门比较实用的技术。他可以通过各种方式实现,如VPN、远程控制工具等等。不过,远程桌面Web连接也是其中的
- 网页体积大小是一项常见的SEO指标,在进行SEO诊断分析中都会考虑到这一点。随着网络带宽的增加,网页体积的大小将会越来越不重要,因为网速加快
- UCenter Home(简称UCHome)新版本即将推出。在即将开始测试UCenter Home 2.0中,针对1.5版本新增了六大互动新
- 一个中心是指以用户体验为中心,两个基本点是指以寻找产品差异化,寻找盈利模式点。那么四项基本原则是针对一个中心,即用户体验为中心的阐述。我们在
- 今天逛网站逛到bbPress官网,看到bbPress更新到bbPress 2.0正式版,没事想下载来折腾了下。点击Download链接的时候
- 网络上曾流传过这么一张图片,打倒标题党。什么是标题党呢?网络上有这么一种人,他们浪费网友时间、欺骗网友感情;他们的帖子充斥着暴力、 * 、罪恶
- 搜狗云输入法跨平台、免安装,对于Linux、Mac OS等操作系统的用户,或在网吧等临时使用环境,都能在上网冲浪时享受搜狗输入法的流畅输入体
- 游戏团队月薪3500雇人玩魔兽(腾讯科技配图)通过完成游戏中的终极任务 争取厂商的测评订单一个喜爱《魔兽世界》的游戏团队,在获得百万赞助后,
- 最近的一直为博客助手程序而烦恼操心。因为以前对于内容管理系统并不是太熟悉,只有初步的认识。先前使用国内空间时,也安装过动易、风汛等博友推荐的
- 拒绝游泳的鱼:各位安徽及各地的互联网朋友们,大家下午好。老k一直在做非常公益的这些本地站长的交流,所以鱼特别支持来和大家聊一下。其实很多的技
- 随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统。Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务
- 一、背景说明1.1 面临问题最近一份产品检测报告建议使用基于pki的认证方式,由于产品已实现https,商量之下认为其意思是使用双向认证以处
- “人肉搜索”引擎是近年来在互联网兴起的一种资料搜索方式,很多人把它误会成单纯的“寻人”机制,而实际上“人肉”的内涵远不止如此,它更多时候代表
- 李彦宏昨日在香港科技大学演讲时,首度披露了进军日本市场涉及的搜索内容,“我们在日本市场已经推出网页搜索、图像搜索、视频搜索,而我们进军全球市
- Centos8最小化部署安装OpenStack Ussuri的教程如下所示:#!/bin/bash#Centos8最小化部署安装OpenSt
- 10月21日消息,阿里巴巴B2B公司今日对外公布“中国中小企业商务服务伙伴计划”,与首批纳入计划的四家物流巨头签订战略合作协议,其中天天快递