リダイレクト設定を追加する

別で立ち上げているサイト CLUB CAVALIER( https://club-cavalier.com )のサーバを移転して1週間と少し。

アクセス数が極めて少ないサイトではあるんですが、サーバ移転の際にディレクトリ構成を変えてから404エラーが多発していることをログを見て気付きました。

どのようなエラーか

404エラーというのは、普段からも「よく」とは言わないまでも、比較的簡単に目にすることができるエラーで、接続したけれどもページが存在しない、という Not Found のエラーです。

例えば、昨年12月の構成変更以前は、HTMLファイルを、 http://club-cavalier.com/html/xxxx.htm というように、 html ディレクトリで公開していました。

ここで、 http://club-cavalier.com/html/info.htm というページがあったとして、これに興味を持った方がブックマークなどを付けたとします。その後に、サイト管理者(私)が、何らかの理由でこのページを削除します。info.htm ファイルが無くなった後に、ブックマークで info.htm を閲覧しようとすると、404エラー発生となります。

一度公開したページを、何の手当てもせずに削除だけ行うというのは、あまり無いかとは思いますが、ファイル名の変更や、ディレクトリ構成の変更はあり得るかと思います。

CLUB CAVALIER はというと、

2020年11月までhttp://club-cavalier.com/html/
2021年7月までhttp://archive.club-cavalier.com/html/
2021年8月からhttp://archive.club-cavalier.com/html/

という感じで、今回のサーバ移転では構成を変えていないので、特に何も対策を講じていなかったんです。

が、実は、2020年12月から2021年7月までは、 http://club-cavalier.com/html/ も「活かしたまま」だったということを、すっかりと忘れていました。

サーバ移転に伴い、ルートの html フォルダは移してませんので、404エラーが発生するはずです。

リダイレクト設定を行う

「ディレクトリが変わったので、ブックマークの修正をお願いします」で、終わらせてもいいのですが、かつてのURLで、新しいURLにアクセスできた方が、親切というものです。

先ほど出した例で話を続けます。

http://club-cavalier.com/html/info.htm

での入力を、

https://archive.club-cavalier.com/html/info.htm

に転送してあげればいいわけです。

追加するのは http://club-cavalier.com/ の階層(ルートディレクトリ)に [.htaccess]という名前のファイルです。

※実際には、WordPressを運用していますので、既に .htaccess ファイルは存在しています。

RewriteEngine On
RewriteRule ^html/(.*)$ https://archive.club-cavalier.com/html/$1 [R=301,L]

これでOK。

複数行の設定は

htmlと同様、clubディレクトリ・blogディレクトリを archive.club-cavalier.com/club や、 archive.club-cavalier.com/blog と、転送させてあげる必要があります。

もちろん、 .htaccess に同じように追加すればよいのですが、ひとつ気になることが。



RewriteRule ^html/(.*)$ https://archive.club-cavalier.com/html/$1 [R=301,L]

前方で現れる赤字部分を、青字部分で代入するための記述方法です。

複数行を記述する場合、1行単位で数字が付けられる?それとも .htaccessファイルでの通し番号?

RewriteEngine On
RewriteRule ^html/(.*)$ https://archive.club-cavalier.com/html/$1 [R=301,L]
RewriteRule ^club/(.*)$ https://archive.club-cavalier.com/club/$1 [R=301,L]
RewriteRule ^blog/(.*)$ https://archive.club-cavalier.com/blog/$1 [R=301,L]

結論からいうと、これで大丈夫。1行単位、ということなんでしょうね。