URLをリダイレクトする場合に.htaccessにApacheのモジュールのmod_rewriteを書くことで実現できます。

http://hoge.hogera.org/12345.htmlというURLがあった場合にhttp://hoge.hogera.org/hoge.html?id=12345を実行させる時には

Rewrite Engine on
RewriteRule ^([0-9)]+)\.html$ hoge.html?id=$1[R=301,L]

でOKです。

しかし、この時にブラウザで表示されるURLはhttp://hoge.hogera.org/hoge.html?id=12345となります。これを元のURLのhttp://hoge.hogera.org/12345.htmlにするために試行錯誤しました。

hoge.htmlは実際はphpをベースにしたプログラムです。もしhoge.htmlがhoge.phpならブラウザでのURLはhttp://hoge.hogera.org/12345.htmlと表示されます。

そこでこれを利用しmod_rewriteの飛び先を一旦hoge.phpにして、その後にhoge.html?id=$1を実行させるようにしました。

hoge.phpは

<?php
$id = $_GET['id'];
readfile(http://hoge.hogera.org/item.html?id=$id)
?>

です。

また.htaccessは下記のように書きなおします。

Rewrite Engine on
RewriteRule ^([0-9)]+)\.html$ hoge.php?id=$1 [L]

これによりURLのリダイレクトでブラウザの表示が元のURLとなります。

ただしブラウザですがインターネットエクスプローラーはIE7以上が必要です(それ以下だと思った表示にならないため)。Firefoxは3.5.9ではOKでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>