现在我有这样一个需求, 把网站的动态部分,例如html,asp,aspx部分,和静态部分,例如jpg,gif,等等类似的进行分离,分别放在两台服务器上,,我现在需要把已经存在的网站的这两部分进行分离,请问下各位大侠有没什么高见? 我用程序虽然吧图片按原始目录分离出来了.文件也能按原始目录进行分离,但是 文件里面的图片路径进行替换就感到很难处理,比如<img src="../image/new1.jpg"> 需要被转换成 <img src=http://localhost/image/new1.jpg>,像这样简单的路径还容易替换,但是 像 Guid文件夹里有个a.html页面,里面包含2个图片文件 图片1<img src="images/new1.jpg"/> 图片2 <img src="../news/images/img2.jpg"/> ,图片1引用了Guid文件夹内images下的new1.jpg文件,但是 图片2 却引用了 Guid同及目录 news下的images文件夹的img2.jpg..本来我是用正则表达式统一替换,单这样不同目录的引用被替换后就成了<img src=http://localhost/Guid/image/new1.jpg 与 http://localhost/Guid/News/images/img2.jpg ,很明显New/images/img2.jpg不在Guid目录下面,所以这类似的问题交错出现,很是麻烦,还往各位高人帮下忙.. 提个解决的思路... 多谢.
你不能用正则直接替换,而是应该将这些原路径先提取出来,然后算出其绝对路径,再去掉host,然后再和你的新路径合并。
比如 images/new1.jpg,你的程序在打开这个 a.htm 文件时是知道其在 Guid目录下的,那么你用 Uri 这个类就可以通过输入当前Uri 和 相对路径得到绝对路径是 http://oldhost/Guid/image/new1.jpg.
然后 再用 Uri 这个类获取其相对路径 Guid/image/new1.jpg 然后再和 新的host 如 localhost合并就可以了。
../news/images/img2.jpg 也是同理,绝对路径的出来是 http://oldhost/news/image/img2.jpg
再合并后就是 http://localhost/news/image/img2.jpg
这个有点麻烦了,关注...
其实我觉得你可以考虑重构一下程序:如果有时间和必要的话
如果图片的src都是写死到文件中的,那么很可惜,你要一个个查找替换了,还好我们有正则表达式可以做这个,不过工作量估计依然不小,而且没有办法保证完全正确
如果可以重构,一个小技巧,所以静态资源,比如图片脚本样式之类,从一开始就设计为可分离,比如一个图片应该是这个样式滴:
<img src="<%=ResourcesURL%>/news/new1.jpg" alt="new1" />
这个ResourcesURL可以放到web.config里也可以放到数据库里,随便哪里都可以,是一个可配置的字符串,这样当你把图片分离出去的时候就容易了,尤其当你想把图片文件放到单独的二级域名下的时候(放到单独二级域名可以加速浏览器加载速度,可以平衡服务器IO等等,好处多多)
之前的设置没有考虑这些的话,始终都是力气活。
丁学的意见不错 以后做站的时候要小心了!! 不亏是专家 呵呵