ISAPI_rewrite中文手册附多站点配置方法

 更新时间:2007年07月19日 00:00:00   作者:  
在NT 2000 XP和2003平台上,在系统帐户下应该INETINFO程序应该与IIS5以共存模式过滤器运行。所以系统帐户应该给予对所有的ISAPI-REWIRITE DLLS 和所有的HTTPD


Code:
[ISAPI_Rewrite]
RewriteRule (.*?\.asp)(\?[^~]*)?~([^~]*)~([^~]*)(.*) $1(?2$2&:\?)$3=$4$5 [NS,I]
Running servers behind IIS


假如我们有一个内网服务器运行IIS而几个公司服务器运行其他平台,这些服务器不能从INTERNET直接进入,而只能从我们公司的网络进入,有一个简单的例子可以使用代理标记映射其他服务器到IIS命名空间:



Code:
[ISAPI_Rewrite]
RewriteProxy /mappoint(.+) http\://sitedomain$1 [I,U]
Moving sites from UNIX to IIS


这个规则可以帮助你把URL从 /~username 改变到 /username 和从 /file.html 改变到 /file.htm. 这个在你仅仅把你的站从UNIX移动到IIS并且保持搜索引擎和其他外部页面对老页面的连接时是有用的



Code:
[ISAPI_Rewrite]

#redirecting to update old links
RewriteRule (.*)\.html $1.htm
RewriteRule /~(.*) http\://myserver/$1 [R]


Moving site location

许多网管问这样的问题:他们要重定向所有的请求到一个新的网络服务器,当你需要建立一个更新的站点取代老的的时候经常出现这样的问题,解决方案是用ISAPI_Rewrite 于老服务器中


Code:
[ISAPI_Rewrite]

#redirecting to update old links
RewriteRule (.+) http\://newwebserver$1 [R]

Browser-dependent content
Dynamically generated robots.txt


robots.txt是一个搜索引擎用来发现能不能被索引的文件,但是为一个大站创建一个有许多动态内容的这个文件是很复杂的工作,我们可以写一个robots.asp script

现在使用单一规则生成 robots.txt 


Code:
[ISAPI_Rewrite]

RewriteRule /robots\.txt /robots.asp
Making search engines to index dynamic pages


站点的内容存储在XML文件中,在服务器上有一个/XMLProcess.asp 文件处理XML文件并返回HTML到最终用户,URLS到文档有如下形式
http://www.mysite.com/XMLProcess.asp?xml=/somdir/somedoc.xml
但是许多公共引擎不能索引此类文档,因为URLS包含问号(文档动态生成),
ISAPI_Rewrite可以完全消除这个问题


Code:
[ISAPI_Rewrite]

RewriteRule /doc(.*)\.htm /XMLProcess.asp\?xml=$1.xml


现在使用如同http://www.mysite.com/doc/somedir/somedoc.htm的URL进入文档,搜索引擎将不知道不是somedoc.htm 文件并且内容是动态生成的

Negative expressions (NOT

有时当模式不匹配你需要应用规则,这种情况下你可以使用在规则表达式中称为Forward Lookahead Asserts 

例如你需要不使用IE把所有用户移动到别的地点


Code:
[ISAPI_Rewrite]
# Redirect all non Internet Explorer users
# to another location
RewriteCond User-Agent: (?!.*MSIE).*
RewriteRule (.*) /nonie$1
Dynamic authentification


例如我们在站点上有一些成员域,我们在这个域上需要密码保护文件而我们不喜欢用BUILT-IN服务器安全,这个情况下可以建立一个ASP脚本(称为proxy.asp),这个脚本将代理所有请求到成员域并且检查请求允许,这里有一个简单的模板你可以放进你自己的授权代码


现在我们要通过配置 ISAPI_Rewrite 通过这个页面代理请求:


Code:
[ISAPI_Rewrite]
# Proxy all requests through proxy.asp
RewriteRule /members(.+) /proxy.asp\?http\://mysite.com/members$1
Blocking inline-images (stop hot linking


假设我们在http://www.mysite.com/下有些页面有一些内联 GIF图片很好,他人可以不直接协商通过盗链到他们的页面上,我们不喜欢这样因为加大了服务器流量
当我们不能100%保护图片,我们至少可以在浏览器发送一个HTTP Referer header的地方限制这种情况


Code:
[ISAPI_Rewrite]
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|png) /block.gif [I,O]


多站点配置:

只需要将httpd.ini文件放置到相应站点的根目录下即可

ISAPI_rewrite 实现IIS二级域名无限的方法

我要实现的是类似的例子:
http://xxxx.aaa.com 实际访问http://aaa.com/bbb.asp?id=xxxx
http://xxxx.aaa.com/index.html 实际访问http://aaa.com/bbb.asp?id=xxxx
http://xxxx.aaa.com/intro.html 实际访问http://aaa.com/intro.asp?id=xxxx
网上很多都给出了一部分,但是不全,也有很多网友在问怎么能实现这样得东西,也没有人解答

做了很多例子后,终于实验出来了
复制代码 代码如下:

RewriteCond Host: (?!www.)([^.]+).aaa.com
RewriteRule ^(.*)/ /bbb.asp\?id=$1
RewriteCond Host: (?!www.)([^.]+).aaa.com
RewriteRule ^(.*)/index\.html /bbb.asp\?id=$1
RewriteCond Host: (?!www.)([^.]+).aaa.com
RewriteRule ^(.*)/intro\.html /intro.asp\?id=$1

相关文章

最新评论