昨日の「Twitter 404リンクを解決するコード」の修正

昨日公開したTwitterのリンクで404が出ちゃう現象を解決するコードに不備があったので修正しました。

コード,修正,htaccess,twitterなどについて。

昨日の「Twitter 404リンクを解決するコード」の修正

昨日公開した
  「ツイート上に含まれたリンク」と「つぶやき」が、半角スペースを含ま
   なかった為にくっ付いちゃったURLを「サーバー側で上手く処理する」
コードに、不備があったので修正しました。

参考:昨日の記事
 (このサイト)Twitter の「半角スペース入れるの忘れちゃったリンク」の404エラーを解消
 (裏ブログ)Twitter などでURLに全角が含まれ404エラーになっちゃう場合の回避方法
 ↑修正済み。昨日も閲覧した場合は上記ページでリロードが必要です。

URL中に「.html」が複数含まれていた場合に上手く作動しないってのは認識していましたが、以下条件で無限ループしてしまいます。

無限ループする条件
「.html」が複数回含まれ、かつ末尾が「.html」で終了
していた場合
うーむ。。。これはまずい。


http://aaa.com/aaa.htmlhttp://bbb.com/bbb.html
▲こんな風にURLが2個つながったリンクの場合の判定が甘く、無限ループしちゃう。

以下修正版です。
サーバーの.htaccess またはApache のhttpd.conf どちらかに記述します。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !^.*\.html.*\.html$
RewriteRule ^(.*)\.html.*\.html /$1\.html [R=301,L]
RewriteCond %{REQUEST_FILENAME} !^.*\.html$
RewriteCond %{REQUEST_FILENAME} "\.html.*"
RewriteRule ^(.*)\.html.* /$1\.html [R=301,L]

 ※赤字部分が追加コード。

おまけ
ちなみに以下のような簡略書式でも作動しない。永久ループしちゃう。
RewriteEngine On
RewriteBase /
#RewriteCond %{REQUEST_FILENAME} !^.*\.html$ #←無効にしてみる
RewriteCond %{REQUEST_FILENAME} "\.html.*"
RewriteRule ^(.*)\.html.* /$1\.html [R=301,L]

 RewriteCond %{REQUEST_FILENAME} !^.*\.html$
 の一文を無効にしても上手く作動するような気がするんだけどなぁ・・・(^_^;

パラメータ -s とか !-f くっ付けて、ファイルの有無を確認すればもっと完璧なディレクティブが出来上がりそうだけど、RewriteRuleを2回使わず、1回で済む方法もありそうだけど、、、私の腕前では時間がかかりそうなので、それはまた別の機会に。



次のページへ
前のページへ
昨日の「Twitter 404リンクを解決するコード」の修正
TOPページへ

コメント(多忙中のため休止中) C[0] T[0]

人気ブログランキング
このブログを応援する・このブログに寄付する
mona:MEmMcKYAWfdX1r3XkoWBoweJTSjtDgdqRo
btc :1342ndtQDJ3NKkTw1BfP8AD4xMy8NJ4kWb


広告&サイト内おすすめページ

 

関連記事(ぜんぶ見る>> 2011年
UTF8でサイト作ってたら、①②③とか機種依存文字もう気にしなくて良かったんだ
2011年10月1日以降、TvRock/TvTestが映らなくなった場合
サイト開設1611日目にしてようやくホームページ作りました><
一部XP+IE6ユーザーの規制解除\(^o^)/

※コメント欄の一時休止中につき、Monacoin企画も休止中です。
簡単!4ステップでふるさと納税 a8
次のページへ
前のページへ

更新日 2011/06/12(2011年06月公開)このページはリンクフリーです

カテゴリ(メニュー)
このページ

Amazon

Amazon 日替わりタイムセール
サイト内検索
Special Thanks (TOP15)

Amazon
リンク集
楽天市場/ブログランキング
a8 a8