RewritePath()重写Url路径后页面内的相对链接地址出错?
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
根据这个在HttpModule中使用RewritePath()重写Url路径,Url是重新定向到了指定的页面,但指定页面中原来使用的相对路径的图片等地址都出错了,会显示红叉,大家是怎么处理的?
------解决方案--------------------用绝对路径~~~~~~~~~~~~~~~
------解决方案--------------------http://www.nickyma.com/blog/article.asp?id=155
http://www.cnblogs.com/teddyma/archive/2006/09/11/500790.html
看看这两篇文章
------解决方案--------------------mark, 又多了两篇资料..
------解决方案--------------------都是相对路径惹的祸!
浏览器在处理相对路径时,是以浏览器上接受的url地址为基础进行计算的,也就是说,如果当前的地址为folder/1.aspx,那么,很显然,./section/2.aspx这个页面,对应的自然是folder/section/2.aspx了,问题就出在这儿了!没有URL重写时,不会有这样的情况出现。但是URL重写,并且,将一个带假目录的虚拟地址重写到一个不带假目录的页面时,由于浏览器客户端和服务端此时的当前页面计算方法是不同的,就会发生相对路径的匹配错误问题!真实很严重的问题啊!
解决的办法,只有使用绝对路径!但是,我们当然不会傻到对每个链接直接使用绝对路径的,呵呵:)
将Default.aspx中的所有相对路径都使用Page.ResolveUrl进行包装如下,在输出页面时就将地址转换为绝对路径,就能解决这个恐怖的相对路径陷阱了。
------解决方案--------------------这是因为你的图片地址使用了相对路径,重写之后地址发生变化,所以如楼上所说采用绝对路径或者根据规律生成相对路径,我一般是从根目录下面写路径。。。如
/img/xxx/login.jpg
这样也不会有问题。
------解决方案--------------------/img/xxx/login.jpg
如果是这种方式的话,那应该程序不是安装在根目录下,放在虚拟目录中的话,也还是会有问题。