文字列判別関数を作っておくと便利たとえば、次のような文字列判別関数を作っておくと便利です。調べた結果、WordPressを使っているとmagic_quotesの設定は関係なく$_GET,$_POST,$_COOKIE,$_SERVERの4つは、必ずaddslashesされてバックスラッシュがつく事がわかりました。バージョン5.4.0以前のPHPでは、magic_quotesがONに設定されていると、POSTやGETで送ったデータの中にある全てのシングルクオート、ダブルクオート、バックスラッシュ、NULL文字の4つに自動的にバックスラッシュがついてエスケープされます。今作っているプラグインで$_POSTで送ったtextareaのデータにバックスラッシュがついたまま消えません。テスト環境のmagic_quotesはOFFなのにです。この記事を書いた際のWordPressのバージョンは3.9.1です。(バックスラッシュ)、NULL文字の4つに自動的にバックスラッシュがついてエスケープされます。バージョン5.4.0から削除されたんですが、まだそれ以前のPHPは多いです。そこで、get_magic_quotes_gpc関数で、magic_quotesがONかOFFか判別して、ONの場合にはstripslashesを使ってバックスラッシュを削除します。$_POST['hoge'];}ところが、今作っているプラグインで、この作業をしてもPOSTで送ったtextareaのデータにバックスラッシュがついたまま消えません。テスト環境のmagic_quotesはOFFなのにです。wordpressメモ」というページを見つけました。結論を書くと、WordPressを使っているとmagic_quotesの設定は関係なく、$_GET,$_POST,$_COOKIE,$_SERVERの4つは、必ずaddslashesされてバックスラッシュがつきます。wordpressメモ」に書いてあるとおりなんですが、wp-includes/load.phpに、wp_magic_quotesという関数があります。ここで、上記のget_magic_quotes_gpc関数で、magic_quotesが有効になっているか調べ、ONの場合にはstripslashesを使ってバックスラッシュを削除しています。それで終わらずに、add_magic_quotesという関数を実行しています。);}この、add_magic_quotesは何かというとWordpressの独自関数で、実体はwp-includes/functions.phpにあります。この中で、addslashes関数を使って、$_GET,$_POST,$_COOKIE,$_SERVERの全てのデータをエスケープしています。$array;}wp_magic_quotes関数はどこで呼び出されているかというと、wp-settings.phpの242行目です。(バージョン3.9.1の場合)なのでWordPressを使う場合は、magic_quotesの設定に関係なく、stripslashesが必要でした。これがわかるまで随分ハマりました。wordpressメモ」を書かれた方には感謝です。有効か?Yahoo!JAPANの「カスタムサーチ」のページで「内容が重複する複数のURLをまとめるよう、検索エンジンに通知」という記事を見つけました。サイトには、URLは異なるがウェブページの内容は変わらないというケースがあります。URLがトラッキング用のパラメータを含んでいる場合や、URLに含まれるパラメータをもとに閲覧環境によってウェブページの表示を最適化しているような場合です。例http://www.example.com/products?trackingid=feedhttp://www.example.com/products?sessionid=hgjkeor2http://www.example.com/products?printable=yes&trackingid=footerこのような場合、検索エンジンのインデックスに個々のURLで登録されると、同じ内容のウェブページが検索結果に表示されたり、同じ内容のウェブページであるにもかかわらず、各URLにクローラーが巡回し、サーバーに負荷をかけてしまう、また、サイト内の巡回が効率的に行われないといった不都合が発生することがあります。このようなことを避けるため、サイト管理者がウェブページのなかで<link>タグを利用して、重複を避けるように検索エンジンに通知する方法が用意されています。具体的にはヘッダに下の様に書いたとすると「このページはhttp://www.example.com/と同じ内容です」と宣言したことになるようです。href=”http://www.example.com/”>ということは、ここでひとつの疑問が出てきます。ヘルプ」にありました。指定できるかリダイレクトは簡単に設定できない場合があります。サーバーを使用しているときに、新しいドメイン名に移行する場合などです。可能な限りこの要素を追跡します。属性」は、次のような使い方が出来るということでしょうか?ブログやサイトを別ドメインに移転した。今までに作ったページも新しいドメインにコピーした。今後は新ドメインで運用するが、これまでの遺産として古いドメインにも記事を残しておきたい。すると後から作った新しいサイトがコピーサイトとして検索エンジンに低く扱われる可能性がある。属性」でコピー済みの新しいサイトの記事を指定しておく。することで検索エンジンには、新サイトを優先するよう要望する。可能な限りこの要素を追跡」してくれるのでしょうか?実は最近、この条件に合致した移転ブログがあります。(長いので以下「パー...」と省略表記)「パー...」は最近、独自ドメインを取って「ココロデザイン」というサイトに移転しました。その移転の際のリポートを「技術のタマゴ」というブログに書いています。いうことで「技術のタマゴ」を開いたら、こんな記述が見つかりました。※rel=”canonical”で重複記事の中で、新記事を一番だと主張するという案もありましたが、同一ドメイン間じゃないと使えないということで、却下になりました。rel=”canonical”は使わなかったようです。Googleのページには、こう書いてあります。サーバーを使用しているときに、新しいドメイン名に移行する場合などです。指定できます」そうであるなら「同一ドメイン間じゃないと使えない」というのは間違いじゃないでしょうか?追記:今ご覧いただいているこのブログの移転で試したところrel=”canonical”は適用されました。尚「技術のタマゴ」の記事は訂正されています。新サイトを指定できるとしても、ブログで実際にどうやればいいのかという問題があります。すべての記事のヘッダにrel=”canonical”属性で、新しいURLを書き込まないといけませんが、多くの無料ブログのテンプレートでは1記事ごとに違うURLを指定する事は出来ません。<body>内のrel=”canonical”」という項目で次のように書いてありました。記事の中に書いても有効化されないようです。rel=”canonical”はHTMLドキュメントの<head>セクションだけに出現しなければならない。HTMLの読み取りの問題を避けるために<head>の先頭にできるだけ近いほうがいい。<body>にrel=”canonical”が出てきたときは無視する。ファンブログハックの記事からファンブログハックに「「タイトルタグの重複」をjavascriptで回避する(ファンブログ、FC2)」という記事があります。JavaScriptを使ってHTMLに書いてあるのと違うタイトルに書きかえたところ、Googleには書きかえたタイトルが反映されたという内容です。実はこのブログ(移転前の旧ブログ)は今月1日に新しいスキンに変えているんですが、「site:fanblogs.jp/ayzfqir5」をググるとおもしろい結果が出ます。このブログのスキンには、タイトルにページ番号やカテゴリー名を表示させる機能がありません。JavaScriptで書き加えているんですが、スキンを変えて数日で、検索結果に反映されるようになりました。ファンブログハックの記事の通りです。赤枠内はスクリプトで追加したものですが、見事に反映されています。属性を追加すれば、検索に反映されるのではないだろうか?つまり、新しいサイトを優先して表示してくれるのではないだろうか?と仮定できるのです。それが出来るなら「パー...」にnoindexを指定する必要はなくなります。言ったものの、ページ数がたくさんある時は大変です。ちなみにページが数ページしかない時には、下のようなスクリプトで実現できると思います。適用されるかは不明です。このブログの実際の移転では、この下の「新ドメイン側の.htaccessに旧URLを渡して、振り分ける」方法を使って適用に成功しました。前提条件として、古い記事のURLはすべて「http://old_url.com/archive/xxx」というフォーマットになっているものとします。URLの中のxxxは数字です。この数字ごとに新しいURLをヘッダに書き加えます。新しいサイトでは、記事の内容ごとに違うブログに分けていたとしても大丈夫です。href="'+urls[key[1]]+'"\>');}//--></script>これをheadタグの中で、なるべく上の方に書けばいいと思います。古い記事のURLがhttp://old_url.com/archive/001なら「http://hoge.example.com/page_001.html」というように、それぞれの新URLをヘッダに追記します。記事が何百ページもあったら上のやり方では無理があります。新ドメイン側の.htaccessに旧URLを渡して、振り分ける大抵の無料ブログでは.htaccessは使えないし、だからこの記事のような困りごとになるわけですが、新しいサイトでは.htaccessが使えます。新サイトの.htaccessにパラメータを渡してリダイレクトさせればいいわけです。旧ブログのヘッダには次のように書き加えます。スクリプトで追記したタグが有効に作用するとは断言出来ないので完全なURLを書き込むようにしました。<%topentry_link>となります。変数一覧これで古いブログのURLが「http://old_url.com/archive/001」である記事が開かれると、ヘッダの中に次のタグが書き込まれます。URLエンコードが出来ないのが心配ですが、このブログでは無事にパラメータを渡せました。href=”http://new_domain.com/url_converter.php?old_url=http://old_url.com/archive/001“>Googleなどの検索エンジンがこのタグを読んだら、新ドメインのサーバに「http://new_domain.com/url_converter.php?old_url=http://old_url.com/archive/001」を問い合わせます。新しいサーバには古いURLがパラメータで渡されるので、それを判断材料に新しいURLに誘導すれば(リダイレクトさせれば)いいわけです。参考記事:GET送信とは?サーバー側のリダイレクト手順ということで、サーバー側で.htaccessを使ってリダイレクトと書きましたが、何百個もある記事を、一定のパターンに沿って書きかえるならともかく、記事ごとに違うブログに振り分けるとなると.htaccessでは大変です。なると、旧URLと新URLを紐付けたデータベースを作って処理する方が簡単ではないでしょうか。作るデータベースのtableはこんな仕様になると思います。varchar(256));このテーブルに、URL対応表を作ってから、PHP等のインタープリタでアクセスすればいいと思います。old=’xxx’」というクエリで新URLを取れるでしょう。PHPの場合のソースは次のようになります。Error');}$pdo=null;余談ですがPHPコードのみからなるファイルでは、終了タグは書かない方がいいようです。終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。私はHTMLとの混合PHPの場合でも、最後がPHPの場合はいつも閉じタグを書きませんが、エラーが出たことはありません。このブログが実際に使っているスクリプトデータベースを使わない場合は、連想配列で処理します。実際にこのブログで使っているのはデータベースを使わない以下のスクリプトです。http://dwm.me/archives/'.$url_table[$m[1]],TRUE,301);$url_tableの左側のキーが旧ブログのURL、右が新しいブログのURLに当たります。部分だけ記事毎に違う数字です。その数字部分を正規表現で抽出してキーにします。いう形ですが、古いブログとは番号が違います。くっつけて、header関数で返しています。適用されたら検索結果とアクセス数がこう変わった」にまとめました。