タグ: WordPress
WordPress
mod_rewrite
しばらく間が空いてしまった。WordPress自体があまり手がかからないようで、ひととおり設定してしまえば特に問題もなく、書くこともない。
今回の件は WordPress カテゴリに含めるのも何だという気もするが、その関連ということで。
WordPress導入時、.htaccess
に自動的に
# BEGIN WordPress <ifmodule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </ifmodule> # END WordPress
と書き込まれる。実在するファイル名・ディレクトリ名でない場合、/index.php
が呼ばれるようになる。
さて、WordPress 導入以前に同じサイトで某日記システムを使っていたのだが、その URL は
http://www.example.com/?date=20050325
のようになるものであった。現在この URL で指示されるものはないのだが、上記により、404 エラーにはならず、トップページが表示される。
検索エンジンに旧い形式の URL が残っていて、しかもいま WordPress で作られたトップページがその旧い形式の URL の内容として着々と更新され続ける。WordPress で書いた最新の記事の内容が、http://www.example.com/?date=20050325
のものとして検索されてしまうのだ。
放っておいてもその連鎖は断ち切れないので、ロボット対策を参考に、.htaccess
に次のように書き加えてみた[1]。
<ifmodule mod_rewrite.c> RewriteCond %{HTTP_USER_AGENT} archiver [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} crawler [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} robot [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} slurp [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} spider [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} googlebot [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} msnbot [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] RewriteCond %{HTTP_USER_AGENT} findlinks [NC] RewriteCond %{QUERY_STRING} .*date=200.* RewriteRule ^.*$ - [G,L] </ifmodule>
旧URLへのアクセスは、(1)せっかく検索して見つけて来てくれる人には今のトップページをみていただく (2)検索ロボットなら 410 エラーを返す、とした。こうしておけばそのうち検索エンジンから消えるだろうし、昔の記事に直接リンクしている人はほぼいないだろうから、旧URLへのアクセスは絶滅するだろうと考えた。
—-
という対策をとったのが実は1ヶ月前。だいたい思ったとおりに絶滅に向かっていったのだが、Yahoo の Slurp というのは行儀が悪いのか[2]、なかなか根絶できない。
そして今日、検索で旧 URL をたどってくる人がなぜか増えている。確認すると、.htaccess
の当該部分がすっかり消えている。ファイルの時刻を見ると、絶対に自分で何かをした時刻ではない。WordPress がこれを書き換えることはないと思うし、そうするとこれを置いているレンタルサーバの問題なのだろうか。なんだか気持ちが悪い。
Organizerプラグイン
wp-dokuwiki手直し
lightbox2
Pages+プラグイン
@@ -131,7 +134,9 @@ $sort_cols = array( 'menu_order', 'id', - 'post_title' + 'post_title', + 'post_author', + 'post_modified' ); $sort_orders = array( @@ -142,7 +147,7 @@ $orderby = (!array_key_exists('orderby', $_GET) || !in_array(strtolower($_GET['orderby']), $sort_cols)) ? 'menu_order' : $_GET['orderby']; $sortorder = (!array_key_exists('sortorder', $_GET) || !in_array(strtolower($_GET['sortorder']), $sort_orders)) ? 'ASC' : $_GET['sortorder']; - $sql = "SELECT ID, menu_order, post_title, post_name, guid FROM $wpdb->posts WHERE post_parent = $parent_id AND post_status = 'static' ORDER BY $orderby $sortorder"; + $sql = "SELECT ID, menu_order, post_title, post_name, guid, post_author, post_modified FROM $wpdb->posts WHERE post_parent = $parent_id AND post_status = 'static' ORDER BY $orderby $sortorder"; $rows = $wpdb->get_results($sql); $num_rows = count($rows); ?> @@ -166,6 +171,18 @@ < ?php } else { ?> Title < ?php } ?> + | + < ?php if($orderby != 'post_author') {?> + <a href="<?php echo pp_link_self($parent_id, array('orderby'=>'post_author')); ?>" title="Order by Author">Author</a> + < ?php } else { ?> + Author + < ?php } ?> + | + < ?php if($orderby != 'post_modified') {?> + <a href="<?php echo pp_link_self($parent_id, array('orderby'=>'post_modified')); ?>" title="Order by mod-time">Upd Time</a> + < ?php } else { ?> + Upd Time + < ?php } ?> <br /> <strong>Sort order:</strong> < ?php if($sortorder != 'ASC') {?> @@ -193,7 +210,8 @@ <th scope="col">Order</th> <th scope="col">Title</th> - <th scope="col">Slug</th> + <th scope="col">Owner</th> + <th scope="col">Updated</th> <th scope="col"></th> <th scope="col"></th> <th scope="col"></th> @@ -222,7 +240,8 @@ } else { echo "<td>$row->post_title</td>n"; } - echo "<td>$row->post_name</td>n"; + echo "<td>" . get_author_name($row->post_author) . "</td>n"; + echo "<td>$row->post_modified</td>n"; if(function_exists(get_guid)) { // if available, makes use of the 'Guid Rebuild' plugin (also by me!)
プラグインいくつか
$q['s'] = str_replace(' ', ' ', $q['s']);
を加えた。
=== SOMY SpamBlock Japanese ===
[[http://wp.somy.jp/jump/spam-block-jp|SOMY.jp]]より。”ひらがな”か”カタカナ
”が指定文字数以上、指定回数以上ないとスパムとみなす。
=== WP-ShortStat ===
[[http://bd.dotted.jp/archives/73/|BirDesign]]で見て。「ダッシュボード」にShortStatという見出しができ、そこでアクセス解析の結果が見れる。日本語検索語句の文字
化け対策を施した。
=== Link Rel ===
[[http://bd.dotted.jp/archives/83/|BirDesign]]で見て。ちょっとだけ似たようなも
のを直接header.phpに書いていたが、こっちのほうがスマートなので。header.phpに
< ?php linkrel(the_ID()); ?>
=== SearchWord Highlight ===
http://hiromasa.zone.ne.jp/blog/archives/294/ より。
=== LightboxJS ===
[[http://bd.dotted.jp/archives/42/|BirDesign]]で見て。