请选择 进入手机版 | 继续访问电脑版
搜索
发新帖

7310

积分

好友

主题
发表于 2011-8-18 11:31:18 | 查看: 4929| 回复: 1
如何配置网站的伪静态?

自定义伪静态规则

ISAPI_Rewrite的伪静态规则的文件名称为:httpd.ini

这个文件内容是以[ISAPI_Rewrite]开头的,里面包含相关的RewriteRule

httpd.ini文件需要放在站点根目录下,也就是ftp登陆后的web目录;

同时需要给httpd.ini文件特别的用户(users)组或(IIS_WPG)组的相关权限,才可以生效。

为了网站脚本安全,防止脚本木马跨站攻击,web根目录是不支持(users)组或(IIS_WPG)组的相关权限的,而外层的error文件夹是支持(users)组权限的。直接通过ftp将httpd.ini上传到web目录是无法运行伪静态的。

所以我们要先通过ftp将伪静态规则的配置文件httpd.ini上传到error目录,这样error目录里面的httpd.ini文件就具有(users)组的权限了,然后通过ftp软件将error目录里面的httpd.ini文件移动到web目录下即可。

在ftp软件下,右击服务器上error目录下的httpd.ini文件,选择移动 输入目标目录为web即可!

如果您还是比较模糊,可以直接将httpd.ini上传到web下,然后联系客服要求将httpd.ini文件增加下users组的权限。
发表于 2011-8-18 11:35:43
使用ISAPI Rewrite与Apache Rewrite是有区别的,主要是URL重写规则细节上,ISAPI[一般是windows系统]重写需要使用httpd.ini文件,而Apache[一般是unix系统]则使用.htaccess文件,通过对URL重写实例谈谈使用httpd.ini文件基于ISAPI Rewrite重写URL路径。目前使用的是wordpress程序,虽然前台已经全部重新架构,但URL路径还是使用原有简单的URL,如一篇文章的URL路径:http://www.asw6.com/?p=1119,分类使用?cat=162等。

本文以httpd.ini重写文章URL路径为例,其它URL重写原理一样。

重写前URL路径:http://www.asw6.com/p1119.html[这是需要实现的URL地址]
重写后URL路径:http://www.asw6.com/?p=1119[这也是当前的URL地址]

一,新建httpd.ini文件

二,打开httpd.ini文件并增加如下重写规则
[ISAPI_Rewrite]
RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]

注意其中的一些细节,反斜杠\部分,这个非常重要[或许你会漏掉这句话,但如果你看到了将会省很多的调试时间],对于特殊字符要使用反斜杠\。
RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]

其规则为匹配使有p开头的字符,其中参数部分$1只能是数字[0-9],并以.html结束,如p1119.html,就会匹配为index.php?p=1119,这样程序就能正常的读取ID为1119的文章。

三,上传到你空间的根目录

四,开始调试,调试过程可多刷新页面

同样的URL重写,如果是在apache下的.htaccess则使用如下语句:
RewriteEngine on
RewriteRule ^p([0-9]*).html$ index.php?p=$1 [L]

现在来对比这两者的区别:
ISAPI Rewrite:
RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]
Apache Rewrite:
RewriteRule ^p([0-9]*).html$ index.php?p=$1 [L]

区别就是一些反斜杠,这对于调试非常重要,其它具体的知识大家可参考相应的文档,简单实现你的ISAPI Rewrite重写URL路径。


ASP网站程序在国内运用很广,但是类似于im286.asp?id=20050307213811这样的URL有点不利于搜索引擎的收录,也就是说不符合友好URL(URLs-Friendly)的标准,那么我们用ISAPI_Rewrite打造一个Clean URL,

1.下载ISAPI_Rewrite.ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下载地址:http://www.helicontech.com /download/,就是那Lite Version (free)啦.

2.安装.msi的文件,和装一般程序一样装就可以了,俺就装在D:\ISAPI_Rewrite.



3.接下来一步比较重要哦,看仔细喽.打开Internet 信息服务,右键,web站点属性,电ISAPI筛选器选项卡.添加筛选器,名称自己填,路径自己指定ISAPI_Rewrite.dll,然后确定.


4.来测试一下.新建一个1ting.asp,里面写上

   <%=request.querystring("inso")%>

,效果就是执行的时候1ting.asp?inso=*浏览器显示*.



5.这一步很重要哦,开始添加rewrite规则.正则,好头痛,幸亏这个例子比较简单.
找到ISAPI_Rewrite目录,把httpd.ini的只读属性去掉,打开编辑.我们要把1ting.asp?inso=im286映射成为1ting-im286.html这样的类型,需要在httpd.ini里加上这么一行:
     
RewriteRule /1ting-([0-9,a-z]*).html /1ting.asp\?inso=$1

,保存.


6.来来来,到浏览器里查看一下效果吧.输入http://127.0.0.1/1ting.asp?inso=im286http://127.0.0.1/1ting-im286.html,显示的内容是不是都是im286?这就证明成功啦!


嘿嘿,1ting-im286.html这样的页面要比1ting.asp?inso=im286容易收入,所以现在还在用动态方式的朋友可以尝试一下这样的静态映射效果. IIS Rewrite也可以实现这样的功能。

------------------------------------------------------

ASP之URL重写

下载ISAPI_Rewrite解压到任意文件夹安装,给IIS用户读取权限,在IIS右键点击一个站点,属性,ISAPI筛选器,添加,筛选器名称一定得叫 re,可执行文件就点浏览找到你解压的目录Rewrite.dll加上即可。

  重启IIS后应该就能支持URL重写规则了。

  需要修改解压目录中的httpd.ini这个文件

RewriteRule /info_(\d+)\.htm /info\.asp\?id=$1 [N,I]

这句话就可以把提交的地址http://www.xxx.com/info_122.htm映射到真正的地址 http://www.xxx.com/info.asp?id=122

如果你在处理数据翻页,那么写法是:

More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)
表现形式:More_1_95.html

如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:
More_3_95.html,以此类推。

不过你需要在httpd.ini文件中增加以下代码:
RewriteRule /More_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2 [N,I]

如果你的动态程序有多个参数需要传递,那么就增加多个(\d+)即可,如下:

RewriteRule /More_(\d+)_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2&type2=$3 [N,I]

翻页处理表现形式是:More_1_95.html

如果想把http://www.xxx.com/info.asp?id=50#abc 转换成静态的网页
因为#abc是程序处理了ID=50这个变量生成静态页面之后按锚点又做了一次页内链接,所以应该这么做映射
http://www.xxx.com/info.asp?id=50#abc转 69
换成http://www.xxx.com/info_50.htm#abc,重写规则如下:
RewriteRule /info_(\d+)\.htm#(\d+) /info\.asp\?id=$1#$2 [N,I]

注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite进行动态链接重写HTML静态网址,

回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

推荐文章

广告推广

( 粤ICP备12033978号 )
快速回复 返回顶部 返回列表