WEB开发网
开发学院服务器WEB服务器Apache Apache的ReWrite的应用 阅读

Apache的ReWrite的应用

 2008-10-23 00:00:00 来源:WEB开发网   
核心提示: -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

-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

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Apache ReWrite 应用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接