prettyPhoto使用主题标签,但如果它们被编码(到 %23),大多数浏览器都会出现 404 错误。这之前已经讨论过:
您会收到 404 错误,因为 #callback 部分不是 URL 的一部分。它是浏览器使用的书签,它永远不会在请求中发送到服务器。如果您对哈希进行编码,它会成为文件名的一部分。
为什么哈希会因为它是 URI 编码而成为文件的一部分?这不是一个错误吗?
我问是因为prettyPhoto使用主题标签并遇到同样的问题。我想添加一个'?在哈希是最优雅的解决方案之前,我只是有点茫然如何在现有代码中做到这一点:
函数getHashtag(){ 网址=位置.href; hashtag=url.indexOf('#gallery')!==-1)?decodeURI(url.substring(url.indexOf('#gallery')+1,url.length)):false; 返回标签; } 函数 setHashtag(){ if(typeof theRel=='undefined')return; location.hash=theRel+'/'+rel_index+'/'; } 函数 clearHashtag(){ if(location.href.indexOf('#gallery')!==-1)location.hash=""; }
还有其他建议吗?我会考虑调整我的 404 页面,但这似乎更像是处理问题而不是阻止它。
谢谢!
编辑: 由于漂亮照片处理这些哈希的方式显然没有任何问题,我最终将这些规则添加到我的 apache 服务器:
RewriteRule ^(.*).shtml(%23|#)$ /$1.shtml [R=301,NE,L]
RewriteRule ^(.*).shtml([^g]+)gallery(.+)$ /$1.shtml#gallery$3 [R=301,NE,L]
他们成功处理了 %23 引起问题的情况。