日期:2014-05-20  浏览次数:20419 次

iis中url的rewrite问题
apache可以实现,地址栏保持原始url的状态下,返回url   rewrite后的页面。
IIS有组件可以实现一样的功能吗?
另外,IIS可以实现反向链接功能吗?   3x~

------解决方案--------------------
用Response.Redirect(aaa.aspx);
------解决方案--------------------
用URL Rewrite技术
首先在web.config里,system.web段落间添加
<httpHandlers>
<add verb= "* " path= "*.kfc " type= "HtmlHttpHandler,get " />
</httpHandlers>
kfc就是你要接管的文件扩展名
然后在IIS里,映射.kfc文件到asp_net.dll,具体配置和已有的aspx文件的配置一样
最后在你的cs文件里添加代码:
public struct RegexInfo
{
public string _lookfor;
public string _sendto;
public RegexInfo(string before, string after)
{
_lookfor = before.Trim();
_sendto = after.Trim();
}
}

public class HtmlHttpHandler : IHttpHandler //实现IHttpHandler接口
{

private ArrayList _regex_list =new ArrayList();

public HtmlHttpHandler()
{
DataSet ds = new DataSet();
//读取url重写规则文件,并写入RegexInfo结构的实例中
ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath( "~/tools/Regexs.xml "));//这里是规则文件的路径
foreach (DataRow r in ds.Tables[ "regex "].Rows)
_regex_list.Add(new RegexInfo(((string)r[ "LookFor "]).Trim(), ((string)r[ "SendTo "]).Trim()));
ds.Reset();
ds.Dispose();
}

public void ProcessRequest(HttpContext context)
{
string myURL = context.Request.Path.Trim(); //获取当前访问的重写过的虚假URL
foreach (RegexInfo r in _regex_list)
{
myURL = Regex.Replace(myURL, r._lookfor, r._sendto,RegexOptions.IgnoreCase); //匹配出其真实的URL
}
context.Server.Transfer(myURL);//执行重新匹配后的地址的程序
}

// Override the IsReusable property.
public bool IsReusable
{
get { return true; }
}
}
/////////////////////////////////////////////////////////////////////
最后在tools目录下建立一个规则文件Regexs.xml
<?xml version= "1.0 " encoding= "utf-8 " ?>
<root>
<regex>
<!--重写以后的虚拟地址-->
<LookFor> <![CDATA[/tools/get163,(? <id> (.)+.(jpg|gif|bmp)).kfc$]]> </LookFor>
<!--实际地址-->
<SendTo> <![CDATA[/tools/get163.aspx?url=http://${id}]]> </SendTo>
</regex>
</root>
------解决方案--------------------
ISAPI_Rewrite组件可以实现
------解决方案--------------------
只要IIS服务器的话,就去找IISRewrite筛选器。
关键字IIS ReWrite ISAPI Rewrite,不过一般都是收费的
------解决方案--------------------


上面的是ASP.NET级别的


下面这个是服务器级别的 ISAPI_Rewrite组件

http://www.dj9158.com/ReadCode/383.html