解决了博客部分日志评论后无法返回的问题
作者:一想千开 日期:2009-09-08
几个月前,为了博客程序能够支持生成中文文件名,更利于搜索引擎抓取,对页面中的链接文件名使用了Server.URLEncode。
这样子是解决了中文文件名的问题,但又来了个新的问题,某些日志在评论后点返回会提示404错误。
因为并没有认为这是一个很大的问题和时间关系,一直都未研究此问题。今天仔细看了一下,发现出问题的日志都是文件名里含有特殊字符的,比如汉字,减号“-”等。问题的表现貌似是当评论完毕点返回的时候,返回的路径被进行了两次Server.URLEncode,所以会跳到一个根本不存在的文件上,于是,404了。
继续研究发现,程序里一切都是没有问题的,问题的原因出在点击返回时,程序使用了Response的Redirect方法来实现页面的重定向。而这个Redirect方法会自动给提交给它的页面地址URLEncode编码一次,因为程序中使用统一的函数来获取一篇日志的文件名,获取到的文件名本身已经URLEncode编码过一次了,再编码一次,当然就出错了。
怎么办呢?要是自己再写一个不进行编码的获取文件路径的函数,有点麻烦。要不,在Redirect重定向前把编码过的路径还原一下?嗯,是个好办法,就这么办。不过搞半天发现VBSCRIPT中好像没有还原URLEncode的函数,自己去实现又倍儿麻烦-_-||| 嗯,还是用JSCRIPT吧:
程序代码
这样子是解决了中文文件名的问题,但又来了个新的问题,某些日志在评论后点返回会提示404错误。
因为并没有认为这是一个很大的问题和时间关系,一直都未研究此问题。今天仔细看了一下,发现出问题的日志都是文件名里含有特殊字符的,比如汉字,减号“-”等。问题的表现貌似是当评论完毕点返回的时候,返回的路径被进行了两次Server.URLEncode,所以会跳到一个根本不存在的文件上,于是,404了。
继续研究发现,程序里一切都是没有问题的,问题的原因出在点击返回时,程序使用了Response的Redirect方法来实现页面的重定向。而这个Redirect方法会自动给提交给它的页面地址URLEncode编码一次,因为程序中使用统一的函数来获取一篇日志的文件名,获取到的文件名本身已经URLEncode编码过一次了,再编码一次,当然就出错了。
怎么办呢?要是自己再写一个不进行编码的获取文件路径的函数,有点麻烦。要不,在Redirect重定向前把编码过的路径还原一下?嗯,是个好办法,就这么办。不过搞半天发现VBSCRIPT中好像没有还原URLEncode的函数,自己去实现又倍儿麻烦-_-||| 嗯,还是用JSCRIPT吧:
程序代码<script Language="JScript" runat="server">
//*************************************
//还原URLEncode
//*************************************
function URLDecode(url){
return decodeURI(url);
}
</script>
//*************************************
//还原URLEncode
//*************************************
function URLDecode(url){
return decodeURI(url);
}
</script>
评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇


文章来自:
Tags: