tohokuaikiのチラシの裏

技術的ネタとか。

IISでWordPressのスマートURL(?っていうの)を使いたい場合

IIS.htaccessないからなーとかそこであきらめない。

あきらめたら全てが終わり。

IISの404のエラーハンドラーを使う。要はApacheErrorハンドラーなのだけど、404にWPのページを受けるようにしてやって、真に404かはWordPressに任せてしまうということ。

ちなみにisleのサーバではErrorハンドラーは変更できた。

<?php
$rewrite_url = $_SERVER['HTTP_X_REWRITE_URL'];
$_SERVER['REQUEST_URI'] = sprintf('http%s://%s%s',
                                  (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '',
                                  $_SERVER['SERVER_NAME'],
                                  $rewrite_url);
$_SERVER['QUERY_STRING'] = ltrim(strstr($_SERVER['QUERY_STRING'], '?'), '?'); 
$_SERVER['URL'] = $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>

な感じのスクリプトを作ってやって、404に割り当てる。

なんかちょっと黒い香りのする方法だ。