文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页网页设计经验技巧 → ISAPI_Rewrite3使用教程

ISAPI_Rewrite3使用教程

时间:2011/1/7 15:38:14来源:helicon作者:清晨我要评论(0)

13RewriteEngine on指令指令

4.18指令

 

 

说明 将适用于特定的文件系统的目录和子目录的指令编组
语法 ...
使用环境 server config, virtual host

... 被用来封装一个只适用于指定的文件系统的目录和子目录的指令组。这个指令和<Directory ~> 语法相同。
示例:

<DirectoryMatch "^/www/(.+/)?[0-9]{3}">   # ... directives here ...  

不要忘了在每个< DirectoryMatch>标签中包含 RewriteEngine on指令,也不要将不能应用的规则封装进去。

4.19 指令

 

说明 将应用于匹配文件名的指令包装起来
语法 <Files filename> ...
使用环境 server config, virtual host, directory, .htaccess

指令以文件名限定了封装的指令的作用域。filename参数必须包含一个文件名,支持?和*以及以~字符打头的正则表达式。
示例:

<Files index.*>   # ... directives here ... <Files ~ "\.(gif|jpe?g|png)$">   # ... directives here ... 

不要忘了在每个标签中包含RewriteEngine on指令,也不要将不能应用的规则封装进去。

4.20指令

 

说明 将应用于匹配文件名的指令包装起来
语法 <FilesMatch regex> ...
使用环境 server config, virtual host, directory, .htaccess

指令的语法和_指令"><Files ~>语法完全一样。

<FilesMatch "\.(gif|jpe?g|png)$"> 

不要忘了在每个标签中包含RewriteEngine on指令,也不要将不能应用的规则封装进去。

4.21指令 

说明 把被包装起来的指令集应用到匹配的URL或者虚拟路径
语法 <Location URL-path|URL> ...
使用环境 server config, virtual host

... 标签用来将应用到特定URL或者虚拟路径的指令分组。将运算符完全从文件系统中分划出来,因此那些指令将不会用来控制对文件文件系统位置的访问。因为有几个不同的URL可能映射到相同的文件系统位置。
URL-path是一个形式为“/path/”的虚拟路径。没有协议、主机名、端口号、查询请求字符串被包含在内。URL-path可以包含通配符?和*或者以~字符打头的正则表达式。
示例:

<Location /directory>  # ... rules go here   # ... more rules go here

不要忘了在每个标签中包含RewriteEngine on指令,也不要将不需要用到的规则封套进去。

4.22指令

说明 把被包装起来的指令集应用到正则表达式匹配的URL上
语法 <LocationMatch regex> ...
使用环境 server config, virtual host

这个指令的语法和指令"><Location ~>正则表达式语法完全一样。
示例:

<LocationMatch "/(home|section)/bin">   # ... rules go here 

不要忘了在每个标签中包含RewriteEngine on指令,也不要将不能应用的规则封装进去。

示例

注意:这些示例中所有的规则只适用于httpd.conf文件。在ISAPI_Rewrite以及在Apache的mod_rewrite中,规则的基本路径是不同的,取决于你放置.htaccess文件的目录。如果你将规则放在httpd.conf里的话,初始领头斜线必须存在,而在.htaccess文件中,到这些文件的虚拟路径会被截断。规则取决于以RewriteBase /指令引导的根路径,来允许它们在httpd.conf和目录级的.htaccess文件的任何位置上运作。
简单的搜索引擎友好的网址
下面这个例子演示了如何轻松地使用循环标记藏匿查询字符串参数。假设你有一个如下的URL:http://www.mysite.com/foo.asp?a=A&b=B&c=C,而且你希望以这样的地址来访问它:http://www.myhost.com/foo.asp/a/A/b/B/c/C
请尝试用下面的规则来达到预期的效果:
RewriteEngine onRewriteRule ^(.*?\.asp)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,LP,QSA]
注意这个规则可能破坏页面与CSS文件、图片等的相对链接。至所以这样是因为在浏览器中用于推算完整资源URI的基本路径(页面的父文件夹)发生了变化。只有在您使用目录分隔符作为替代字符时才会发生这个问题。有三种可用的解决方案:
1.使用下面的规则,它不影响基本路径,因为它没有用到目录分隔符“/”。
2.借助于标签直接为页面指定正确的base路径
3.把所有的页面相对链接都变成相对于根目录的地址或者绝对地址形式。
还存在着很多种用了不同的分隔符和文件扩展名的规则。例如,使用像这样的URL:http://www.myhost.com/foo.asp~a~A~b~B~c~C。下面的规则可以用来实现它:
RewriteEngine onRewriteRule ^(.*?\.asp)~([^~]*)~([^~]*)(.*) $1$4?$2=$3 [NC,LP,QSA]
富关键词URLs
在上面的例子中,我们使用很一般的技术来简单地藏匿查询字符串标记。但是很多对搜索引擎优化很有用的解决方案是让您的URL关键字丰富。看看下面的网址,例如:http://www.mysite.com/productpage.asp?productID=127这是大部分网站的常见情况。但是你可以通过使用这样形式的链接来显著地提高你的网页搜索引擎抓取率:http://www.mysite.com/products/our_super_tool.asp,URL中的关键词“our super tool”会被索引,并提高网页排名,但是“our_super_tool”不能直接被用来收回productid=127,这个问题存在几种解决方案。
第一个解决方案,我们建议你使用简短、只包含少数几个参数(既有关键词也有数字标识符)的URL形式,在样您的URL可能看起来如下:
http://www.mysite.com/products/our_super_tool_127.asp。实现这一重写目标只需要一个规则:
RewriteEngine onRewriteBase /RewriteRule ^products/[^?/]*_(\d+)\.asp /productpage.asp?productID=$1 [QSA]

另一个更复杂的解决方案是创建一对一的映射文件,并用它来映射“our_super_tool”到127。该解决方案对一些有很多参数的长URL来说很有用,并允许你隐藏数字标识符。这URL看起来像是http://www.mysite.com/products/our_super_tool.asp。请注意“our_supper_tool”部分必须是产品的唯一标识,是它的标识符。下面是这种解决方案的一个示例:

RewriteEngine onRewriteBase /RewriteMap mapfile txt:mapfile.txtRewriteRule ^products/([^?/]+)\.asp /productpage.asp?productID=${mapfile:$1}

而且你必需创建包含以下内容的mapfile.txt映射文件:

one_product       1another_product   2our_super_tool    127more_products     335

这种方法的优点是:你可以使用它来组合十分复杂的URL转换,但是这是一个小例子,是这个指南中的题外之话。
使用IIS作为反向代理 假设你有运行IIS的互联网服务器以及几台后台服务器或者应用程序运行在其它平台或者机器上。这些服务器不能直接在互联网上阅览,但是你必须为他人提供访问这些服务器的渠道。这里有一个演示如何简单地将某个网站的完整内容映射到另一个运行了ISAPI_Rewrite的站点的文件夹的示例:

RewriteEngine onRewriteBase / RewriteRule mappoint(.+) http://sitedomain$1 [NC,P]

藏匿文件扩展名: 虽然不可能将一个站点的所有的文件的扩展名都藏匿起来,但是我们可以使用ISAPI_Rewrite的文件检查功能来隐藏某些已知扩展名。这里有一个藏匿网站上.asp文件扩展名的规则示例:

RewriteEngine on#Redirect extension requests to avoid duplicate contentRewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]#Internally add extensions to requestRewriteCond %{REQUEST_FILENAME}.asp -f RewriteRule (.*) $1.asp

仿真基于主机头的虚拟网站 例如你已经注册了两个域名www.site1.comwww.site2.com。现在你可以使用同一个物理站创建两个不同的站点了。这里是一个规则示例:

RewriteEngine on#Fix missing trailing slash char on foldersRewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]#Emulate site1RewriteCond %{HTTP:Host} ^(?:www\.)?site1\.com$RewriteRule (.*) /site1$1 [NC,L,NS]#Emulate site2RewriteCond %{HTTP:Host} ^(?:www\.)?site2\.com$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 foldersRewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]#Map requests to the foldersRewriteCond %{HTTP:Host} ^(www\.)?(.+)RewriteRule (.*) /%2$1 [NS]

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

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

相关视频

    没有数据

相关阅读 无法加载ISAPI 筛选器 当前配置只支持加载为 AMD64 处理器体系结vps主机安装ISAPI_Rewrite规则写法和配置常见ISAPI_Rewrite规则写法isapi_Rewrite 状态“未加载的解决办法收集ISAPI_Rewrite的中文资料,URL重写,URL静态化,URL简化如何利用ISAPI Rewrite实现iis防盗链使用ISAPI过滤器增强IIS的功能IIS的ISAPI接口简介

文章评论
发表评论

热门文章 Wordpress本地安装教程dx1.5如何设置二级域名

最新文章 hbuilder有哪些快捷键Wordpress本地安装教程 Wordpress本地安装教程expression web 4文档乱码解决方法dz 2.5“收藏本版”关闭小对话框无法关闭解在制作安装软件之前,您必须先将易语言存盘,

人气排行 如何使用multipart/form-data格式上传文件Photoshop PS图层混合模式详解(非常详细)ISAPI_Rewrite3使用教程网站里添加收藏和设为首页代码桌面快捷方式图标不见了C#获取执行程序所在的当前路径的方法详解(XMLHttpRequest)进行跨域请求方法如何用远程桌面连接进行传输文件