RewriteEngine on RewriteRule ^(.*?.asp)~([^~]*)~([^~]*)(.*) $1$4?$2=$3 [NC,LP,QSA][b]富关键词URLs[/b] 在上面的例子中,我们使用很一般的技术来简单地藏匿查询字符串标记。但是很多对搜索引擎优化很有用的解决方案是让您的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 on RewriteBase / RewriteRule ^products/[^?/]*_(d+).asp /productpage.asp?productID=$1 [QSA]
RewriteEngine on
RewriteBase /
RewriteMap mapfile txt:mapfile.txt
RewriteRule ^products/([^?/]+).asp /productpage.asp?productID=${mapfile:$1}
而且你必需创建包含以下内容的mapfile.txt映射文件:
one_product 1 another_product 2 our_super_tool 127 more_products 335这种方法的优点是:你可以使用它来组合十分复杂的URL转换,但是这是一个小例子,是这个指南中的题外之话。 [b]使用IIS作为反向代理[/b] 假设你有运行IIS的互联网服务器以及几台后台服务器或者应用程序运行在其它平台或者机器上。这些服务器不能直接在互联网上阅览,但是你必须为他人提供访问这些服务器的渠道。这里有一个演示如何简单地将某个网站的完整内容映射到另一个运行了ISAPI_Rewrite的站点的文件夹的示例:
RewriteEngine on RewriteBase / RewriteRule mappoint(.+) http://sitedomain$1 [NC,P][b]藏匿文件扩展名:[/b] 虽然不可能将一个站点的所有的文件的扩展名都藏匿起来,但是我们可以使用ISAPI_Rewrite的文件检查功能来隐藏某些已知扩展名。这里有一个藏匿网站上.asp文件扩展名的规则示例:
RewriteEngine on
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+).asp$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
[b]仿真基于主机头的虚拟网站[/b] 例如你已经注册了两个域名[b]www.site1.com[/b]和[b]www.site2.com[/b]。现在你可以使用同一个物理站创建两个不同的站点了。这里是一个规则示例:
RewriteEngine on
#Fix missing trailing slash char on folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Emulate site1
RewriteCond %{HTTP:Host} ^(?:www.)?site1.com$
RewriteRule (.*) /site1$1 [NC,L,NS]
#Emulate site2
RewriteCond %{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 folders
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
#Map requests to the folders
RewriteCond %{HTTP:Host} ^(www.)?(.+)
RewriteRule (.*) /%2$1 [NS]
网站的目录名应该是这样子的:/somesite1.com,/somesite2.info,等等。
[b]阻断内联图像(阻止盗链)[/b] 假如你有一些页面插入了[b]http://www.mysite.com/[/b]下的gif图片。一些其它站点将通过网页超链接插入这些图片。这会给你的网站增加很多无用的通讯量,而且你希望阻止这种做法。
虽然用ISAPI_Rewrite不能100%地保护图片不被盗链(只有专门的反盗链产品才能做到它),你至少可以在浏览器发来HTTP引用头的时候限制这种情况。下面的规则可以让你只允许来自同一主机的引用页或者空地址访问到这些图片。
RewriteEngine on
RewriteCond %{HTTP:Host}#%{HTTP:Referer} ^([^#]+)#(?!http://1).+
RewriteRule .*.(?:gif|jpg|png) /block.gif [NC]
[b]重定向非www的版本到www[/b]
如果你的网站同时可以通过两种形式的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]
[b]强制SSL或者非SSL到一个指定的位置[/b]
这里是一个演示如何将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]
[b]转移站点位置[/b]
当你把网站从一个域名移到另一个域名,或者从一个文件夹移动另一个文件夹里的时候,这是经常会遇到的问题。你希望将一个网站的所有请求重定向到另一个网站里,而且不丢失请求资源名以及参数。当你希望保留现有的网页的排名和外链接的时候,它是非常有用的。这个解决方案是在旧的网站服务器上使用ISAPI_Rewrite:
RewriteEngine on #Permanent redirect to update old links RewriteRule (.+) http://newserver.com$1 [R=301,L][b]平衡负荷仿真[/b] 这个示例模拟某种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里使用。 [h2]故障处理[/h2]
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日志文件。 请记住你提供的信息越多,我们越容易为你解决问题。这样你更有机会快速地得到解决方案。
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有