prettyPhotoはハッシュタグを利用しますが、ハッシュタグが(%23まで)エンコードされると、ほとんどのブラウザで404エラーが発生します。これは以前に議論されました:
#callback部分がURLの一部ではないため、404エラーが発生します。これはブラウザで使用されるブックマークであり、リクエストでサーバーに送信されることはありません。ハッシュをエンコードすると、代わりにファイル名の一部になります。
URIエンコードされているという理由だけで、ハッシュがファイルの一部になるのはなぜですか?バグじゃないですか?
質問しているのは、prettyPhotoがハッシュタグを使用していて、同じ問題が発生しているためです。'?'を追加すると思います ハッシュが最も洗練されたソリューションになる前に、既存のコードでハッシュを実行する方法が少し途方に暮れています。
関数getHashtag(){ url = location.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ページを微調整することを検討しますが、それは問題を防ぐというよりは、問題を処理することに似ているようです。
ありがとう!
編集: 明らかに、prettyphotoがこれらのハッシュを処理する方法に問題はないので、これらのルールをApacheサーバーに追加することになりました。
RewriteRule ^(.*).shtml(%23|#)$ /$1.shtml [R=301,NE,L]
RewriteRule ^(.*).shtml([^g]+)gallery(.+)$ /$1.shtml#gallery$3 [R=301,NE,L]
%23が問題を引き起こしたケースをうまく処理します。