快捷搜索:  

ISAPI_Rewrite 3.1 教程中文版(5)


RewriteRule (.*) /site2$1 [NC,L,NS]

现在只要把你的站点分别放到/site1和/site2目录下就可以了。注意www.site1.com和www.site2.com这两个域名必须在IIS中被映射到这个网站里,从而使ISAPI_Rewrite能拦截到请求。
或者,你可以使用更多通用的规则,从而把任何请求都映射到与请求主机名同名的文件夹里。

RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Map requests to the folders
RewriteCond %{HTTP:Host} ^(www\.)?(.+)
RewriteRule (.*) /%2$1 [NS]

网站的目录名应该是这样子的:/somesite1.com,/somesite2.info,等等。
阻断内联图像(阻止盗链) 假如你有一些页面插入了http://www.mysite.com/下的gif图片。一些其它站点将通过网页超链接插入这些图片。这会给你的网站增加很多无用的通讯量,而且你希望阻止这种做法。
虽然用ISAPI_Rewrite不能100%地保护图片不被盗链(只有专门的反盗链产品才能做到它),你至少可以在浏览器发来HTTP引用头的时候限制这种情况。下面的规则可以让你只允许来自同一主机的引用页或者空地址访问到这些图片。

RewriteEngine on
RewriteCond %{HTTP:Host}#%{HTTP:Referer} ^([^#]+)#(?!http://\1).+
RewriteRule .*\.(?:gif|jpg|png) /block.gif [NC]

重定向非www的版本到www
如果你的网站同时可以通过两种形式的URL比如说http://helicontech.com和http://www.helicontech.com来访问到,那么最好将一种地址重定向到另一种地址里,来避免搜索引擎对重复内容做出的处罚。下面是一个能将所有的非www地址重定向到相应的www地址上去的301重定向规则。

RewriteEngine on
RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]

强制SSL或者非SSL到一个指定的位置
这里是一个演示如何将SSL强制转到指定的文件夹的示例。只要简单地把下面的规则放到该文件夹下的.htaccess文件里就可以了。

RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Redirect non-HTTPS to HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? https://%1%2 [R,L]

而这个示例作用正好相反:将非SSL强制转到指定文件夹。

RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Redirect HTTPS to non-HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? http://%1%2 [R,L]

转移站点位置
当你把网站从一个域名移到另一个域名,或者从一个文件夹移动另一个文件夹里的时候,这是经常会遇到的问题。你希望将一个网站的所有请求重定向到另一个网站里,而且不丢失请求资源名以及参数。当你希望保留现有的网页的排名和外链接的时候,它是非常有用的。这个解决方案是在旧的网站服务器上使用ISAPI_Rewrite:

RewriteEngine on
#Permanent redirect to update old links
RewriteRule (.+) http://newserver.com$1 [R=301,L]

平衡负荷仿真
这个示例模拟某种DNS轮换负荷平衡技术。假设你有主站www.mysite.com和数台web服务器分别注册为www[1-9].mysite.com。如果你在主服务器上安装了ISAPI_Rewrite,你可以将初始的客户端请求重定向到几台特定服务器,从而在几台服务器之间随机摊开通讯量。一旦已重定向,客户端将一直使用这一台服务器。虽然这种解决方案并不非常理想,但是它确实能分摊你的通讯量并避免在维护会话状态方面发生的问题。
使用下面的规则来重定向客户端:

RewriteEngine on
RewriteMap hosts rnd:hosts.txt
RewriteCond %{HTTP:Host} (www)\.mysite.com [NC]
RewriteRule (.*) http://${hosts:%1}.mysite.com$1 [R,L]

下面是hosts.txt文件的内容

www www1|www2|www3|www4|www5|www6|www7|www8|www9

你还可以在Apeche文档里找到很多其它有用的例子。它们多数不需要修改就可以在ISAPI_Rewrite3里使用。

故障处理

Chapter 6故障处理
在这里你可以一步步找到你在安装ISAPI时遇到的问题的解决方法。
1.首先要正确解决您的问题,我们需要你运行最新的可用版本的ISAPI_Rewrite软件。你可以随时到我们的网站下载最新版的软件来升级你的ISAPI_Rewrite。地址是http://www.helicontech.com/download-isapi_rewrite3.htm 。
2.多数运行ISAPI_Rewrite的问题发生在服务器上NTFS权限限制上。所以,请先阅读需要运行ISAPI_Rewrite文件的权限。
3.请检查应用程序和系统日志中的错误信息。这可能指出您的错误原因。
4.不要忘记设置RewriteEngine on指令在你所用的每个配置文件中。
5.把下列代码行放到httpd.conf文件中:
RewriteLogLevel 9
LogLevel debug
它将创建error.log和rewrite.log两个日志文件,默认放在安装目录下。如果日志文件被创建了,它表明ISAPI_Rewrite正在运行。阅读作为结果的error.log和rewrite.log文件,将能告诉你一些问题的根源线索。
6.如果httpd.conf规则正在生效,但是.htaccess文件却没有载入,请再次检查.htaccess文件的NTFS权限,并确保你没有在使用ISAPI_Rewrite的精简版。
7.如果规则在httpd.conf里能生效,但是有其它部分或者.htaccess文件里不能生效,请确保在每个部分的或者.htaccess文件里包含RewriteEngine on指令。同样的,不要忘掉.htaccess文件里的默认rewriting base值与httpd.conf是不同的。在.htaccess文件里或者<Directory>部分里,ISAPI_Rewrite会自动从路径中剥离本地目录前缀并只对剩下的部分应用规则。所以如果你的规则以“/”字符开头的话,在网站根目录的.htaccess文件中它必须被去掉。
如果你在使用ISAPI_Rewrite时依然有问题,请到技术支持论坛里来写下你的问题,或者发送电子邮件到技术支持邮箱里。
请在您的支持请求里包括以下信息:
1.您的ISAPI_Rewrite配置文件,包括路径和文件名。
2.您的网站的地址链接。
3.你用到测试你的规则的URL。
4.与失败的请求error.log和rewrite.log的文件副本。
5.包括失败的请求的部分IIS日志文件。
请记住你提供的信息越多,我们越容易为你解决问题。这样你更有机会快速地得到解决方案。

ISAPI_Rewrite 发布历史
发布 3.1.0.67
================
[筛选器功能] 增强映射文件的动态加载
[代理帮助文件错误]如果后端不设置内容长度头的话,并不会返回所有的响应。
发布 3.1.0.66
================


精简版的限制
ISAPI_Rewrite的精简版拥有相同的引擎和重写功能。但是也有下面这些限制:
? 不支持分布式.htaccess配置、目录以及网站级配置,只有一个精简版安装目录中的全局的httpd.conf配置能被载入。
? 不支持<VirtualHost>、<Directory>、<DirectoryMatch>、<Files>、<FilesMatch>、<Location> 以及<LocationMatch>这几个标签。
? 精简版中没有代理服务模块,因而所有的和代理服务功能相关的比如说RewriteProxy指令以及[P]标记都会被忽略。
? 精简版没有针对于虚拟主机环境的手工安装包
ISAPI_Rewrite精简版完全免费,它对开发或者测试目的以及只有几个网站而且不需要分布式配置或者代理功能的小型服务器来说是一个很好的解决方案

技术信息 ISAPI_Rewrite由四个部分组成:ISAPI筛选器、ISAPI扩展帮助、GUI管理器以及MMC嵌入式管理单元扩展。ISAPI_Rewrite筛选器和扩展都是用纯C++语言写的快速DLL模块。当安装ISAPI_Rwrite的时候, MMC嵌入式管理单元会被自动注册。ISAPI筛选器将安装在一个全局级别上,你不需要手工注册它。ISAPI扩展也会被安装并注册。
ISAPI_Rewrite管理器实用工具可以在没有安装MMC的系统中运行ISAPI_Rewrite MMC嵌入式管理单元。
Windows Vista以及Windows Server 2008系统中的ISAPI_Rewrite管理器实用工具(Helicon Manager.exe)要求管理员权限来执行,因为较小权限的用户没有权力读取IIS管理元库,而它对显示网站配置来说是必需的。如果用受限的帐号运行ISAPI_Rewrite管理器,你会得到登录管理员帐号的自动提示。
ISAPI_Rewrite筛选器已经有足够地快,因此不用担心它的性能。除非你的服务器运行在最大负荷之下。用户在响应时间或者CPU负荷方面几乎不能发现什么区别,但是如果用了很多的规则的话,服务器最大带宽可能掉下一点来。所以请注意你用的配置决定了性能。建议每个网站使用的规则不要超过100条。在多数情况下,可以利用RewriteMap来避免使用大量的规则。
该程序使用了Regex++ 库。
Regex++ (Version Boost 1.31)
Copyright ?1998-2004, Dr John Maddock

使用和传播许可
该使用许可覆盖了所有的现有版本的ISAPI_Rewite,包括ISAPI_Rewrite、ISAPI_Rewrite完全版、ISAPI_Rewrite精简版、ISAPI_Rewrite测试版,后面统称为ISAPI_Rewrite除非另有指明。
1.所有未明确授予的权利均由Helicon Tech保留。
2.所有的关于ISAPI_Rewrite的版权都由它的作者Helicon Tech独家保留。
3. Helicon Tech准予免费使用ISAPI_Rewrite精简版产品。
4. Helicon Tech准予免费试用ISAPI_Rewrite产品30天,当试用期结束时,请要么购买ISAPI_Rewrite,要么删除ISAPI_Rewrite产品。
5.未注册过的ISAPI_Rewrite试用版,可以在不被改动的前提下自由传播,除非有下例情况。任何个人或者公司都不用为在未得版权持有人书面许可的情况下传播ISAPI_Rewrite而付费。未经版权持有者的书面许可,未注册的试用版ISAPI_Rewrite不允许捆绑其它安装包。
6. ISAPI_Rewrite必须被原样传播,不提供任何形式的保证明示或暗示。你可以在你自己的磁盘上使用ISAPI_Rewrite。作者不为因为滥用本软件导致的数据丢失、损坏,或任何其他类型的损失承担责任。
7.你不得使用、复制、模仿、克隆、出租、出售、修改、反编译、反汇编以及其它任何反向工程,或者转让许可程序,或者任何许可程序的一个子集,除非本协议有提供。任何未经授权的使用将导致本许可自动终止。并可能导致刑事或民事起诉。
8.本许可协议的条款是在未来版本的ISAPI_Rewrite将会有所变化。
9.当你购买ISAPI_Rewrite时,将发给你“注册码”。这种“注册码”可以个人或者公司购买,并只在一台计算机上使用。如果您购买一个以上的ISAPI_Rewrite副本,发给你们的“注册码”只能在等于你购买的许可证数的计算机上使用。
10.您只能使用来自Helicom Tech以及与Helicom Tech有业务合作或者技术合作的公司的注册码。
11. 安装和使用ISAPI_Rewrite意味着接受这些条款及许可条件。
12. 如果您不同意本许可证的条款或违反本许可与您当地的法律规定,您必须从您的存储设备中删除ISAPI_Rewrite文件,并停止使用该产品。
13.我们坚持严格的隐私的准则,不会收集个人识别信息,除非是自愿提供的。
如果您有进一步的问题或意见,请访问我们的http://www.helicontech.com。
感谢你使用ISAPI_Rewrite。
Helicon Tech Corporation.

顶(0)
踩(1)

您可能还会对下面的文章感兴趣:

最新评论