host: http://www.wiki.com
目前实现的:
如果用户输入 http://www.wiki.com/Sandbox.ashx 就转到 http://www.wiki.com/Default.aspx?Page=Sandbox
待实现的:
如果用户输入 http://www.wiki.com/Help/Sandbox.ashx 就转到 http://www.wiki.com/Default.aspx?Page=Sandbox&Cate=Help
目前实现的:
如果用户输入 http://www.wiki.com/Sandbox.ashx 就转到 http://www.wiki.com/Default.aspx?Page=Sandbox
待实现的:
如果用户输入 http://www.wiki.com/Help/Sandbox.ashx 就转到 http://www.wiki.com/Default.aspx?Page=Sandbox&Cate=Help
<LookFor>(http://\\S*?\\/)(.*?)/(.*?)\\.ashx</LookFor>
<SendTo>$1Default.aspx?Page=$3&Cate=$2</SendTo>
if(Request.Url.LocalPath.IndexOf("help")>1)
Response.Redirect("http://www.wiki.com/Default.aspx?Page=Sandbox&Cate=Help");
else
Response.Redirect("http://www.wiki.com/Default.aspx?Page=Sandbox");
http://msdn2.microsoft.com/zh-cn/library/ms972974.aspx
配置相应正则就行了`~
if(Request.Url.LocalPath.IndexOf("help")>1)
Response.Redirect("http://www.wiki.com/Default.aspx?Page=Sandbox&Cate=Help");
else
Response.Redirect("http://www.wiki.com/Default.aspx?Page=Sandbox");
访问http://www.wiki.com/Help/Sandbox.ashx的时候把资源指向了Help/Images/logo.gif
要是用相对的 和lz问题一样
public string SwapUrl(string im_url)
{
string url= "http://www.wiki.com/Default.aspx?Page=Sandbox&Cate=Help"; if (im_url == " http://www.wiki.com/Help/Sandbox.ashx" || im_url == " http://www.wiki.com/Help/Sandbox.ashx?" )
{
urls = url;
}
return urls ;
}
<rewriter>
<rewrite url="http://\S*?/\S*?/\S*?.ashx" to="$1Default.aspx?Page=$3&Cate=$2" />
</rewriter>
Context.RewritePath不光是资源(如图片)找不到,
有种情况甚至会被asp.net认为是两个不同的应用程序
资源的问题好解决,全部使用绝对路径就OK了
不同的应用程序,
怎么解决?
难道要重新建立一个/bin,把dll拷过去???
<LookFor>http://www.wiki.com/(.*?)/(.*?)\\.ashx</LookFor>
<SendTo>http://www.wiki.com/Default.aspx?Page=$2&Cate=$1</SendTo>
<LookFor>~/(.*?)/(.*?)\\.ashx</LookFor>
<SendTo>~/1Default.aspx?Page=$3&Cate=$2</SendTo>或者<LookFor>~/(.*?)/(.*?)\\.ashx</LookFor>
<SendTo><![CDATA[~/1Default.aspx?Page=$3&Cate=$2]]</SendTo>
<SendTo>~/1Default.aspx?Page=$2&Cate=$1</SendTo>或者<LookFor>~/(.*?)/(.*?)\\.ashx</LookFor>
<SendTo><![CDATA[~/1Default.aspx?Page=$2&Cate=$1]]</SendTo>
写的很清楚了
而且还有代码例子,可以下下来看看
写的很清楚了
而且还有代码例子,可以下下来看看
有2种方式实现
程序方法上面已经有高手给出
还有一种方法在IIS上面安装REWRITE工具,在上面填写规则就可以.
这个方法的好处在于不用编写代码就可以实现了.如果确有需求的话,请联系.