タグ: 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]]で見て。