您的位置:首页 > 其它

其实URL重写也可以这样简单

2012-08-10 15:22 281 查看
今天用公司框架(具体就不说了),看的是别人的代码,看到一个连接地址,但就是在项目中找不到,突然想到应该是url重写了,然后看文件夹,原来都是IisUrlRewriter.dll和IisUrlRewriter.ini这2个东西在起作用,稍微研究了下,现把如何实现url重写方法贴出来供大家一起学习和交流,不好请勿喷。

下面是转载过来的(转载自:http://nt.discuz.net/doc/default.aspx?cid=36),内容和图比较多就不自己写了:

为了增强Url友好性,方便搜索引擎的收录,现在很多用户都希望将较长的Url带参数程序地址变成较短的程序或静态网页Url地址,例如:


show.aspx?id=3&page=4

变为

show-3-4.aspx



show-3-4.html
显然,后面的Url更短更友好。

(一) Discuz!NT默认支持的aspx伪Url地址介绍。

Discuz!NT支持一个对用户很有用的优点:默认已经支持伪Url地址,例如:
对于

showforum.aspx?forumid=3&page=4

您可以直接访问

showforum-3-4.aspx

两者返回的内容是完全相同的。
Discuz!NT能做到这一点,是因为它利用ASP.net的功能接管了对aspx文件的http请求,虚拟主机用户也能同样使用这一特性,从而让自己的论坛Url路径更为友好。

(二) Discuz!NT使用html伪静态地址。

ASP.net默认是不接管html文件请求的,如果用户希望使用html的伪静态网页地址,则需要有IIS管理权限,将html也交给ASP.net接管,或者利用IIS筛选器来进行重定向,我们建议选择后者,因为这样做的效率更高。具体步骤如下:

1) 下载UrlReWriter筛选器Discuz!NT特别配置包
点击这里下载 (194KB)
将包内的文件解压缩,包内的IisUrlRewriter.ini文件中已经默认配置好了Discuz!NT在站点根目录时的Url配置情况

2) 修改IIS设置,添加UrlReWriter筛选器

在IIS中选择您的站点,右击选择属性,添加刚才您解压缩出来的IisUrlRewriter.dll到筛选器中,如图:



3) 根据您的需要修改IisUrlRewriter.ini文件,如果希望自己刚才的操作生效,请点任务栏上的“开始” - “运行” - 运行“iisreset”命令使IIS重新启动,来使筛选器生效。

经过上面的设置,对showforum-3-4.html的请求实际上最终变成对showforum.aspx?forumid=3&page=4的请求

说明:

其中IisUrlRewriter.ini是你在里面对要重写的url地址进行配置的文本

比如:RewriteRule ^/+user/+login.html(\?.*)?$ /user/login.aspx?act=user.login

这个就是重写规则, ^/+user/+login.html(\?.*)?$ 是和 /user/login.aspx?act=user.login等效的,在页面中比如:

<a href="user/login.html">登录</a>实际是访问的/user/login.aspx?act=user.login页面。这样就达到重写的目的了,各位看官们看了后是不是觉得比较简单呢?那赶紧去实践下吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: