2024年6月16日初稿
リダイレクトさせたいのだが、.htaccess がどうしても動かない。と嘆いている方、もしかしたら、このページが成功の鍵になるかもしれませんよ。
それでもリダイレクトしない!
根を詰め、疲労した頭に鞭打って、試行錯誤を重ねたあげく、ふとしたことで、やっと動くようになりました。まあ、読んでやってください。
seadragon.infoのドメインを手に入れて、まず、フレッシャーのサイトを、(サイトを立ち上げたばかりの初心者でしたから、今から思えば後悔することばかりです) seadragon.info/f/fresher/ に開きました。なぜ、わざわざ、f を入れたのか、今ではもう思い出せません。多分、デスクトップのフォルダーのつもりだったのでしょう。でも、WEB
では、これが、簡単には変更できない URL になるのです。
でも、何年か経って、
seadragon.info/fresher/
とスッキリさせたいと思って、引っ越し(といってもただのコピー)しました。
しかし、Googleでは、フレッシャーといえば、
/f/fresher/
の方へ、いつまでも案内しています。こういう場合は、リダイレクトで新しいディレクトリへジャンプすると良い、というのが常道らしいですね。
そこで、ロリポップのマニュアルを参考にして、.htaccess を書いて、アップロードしました。ですが、
ロリポップ!レンタルサーバーを使っていますので、アドレスの転送のマニュアルを読むと、「簡単じゃん」 てな具合で、
Redirect permanent /fresher/ https://seadragon.info/fresher/
と書いた.htaccess ファイルを、マニュアル通り、リダイレクト元のディレクトリ
seadragon.info/f/fresher/
にアップロードしました。
が、これがどうしてもダメ。×年前にやったものの、どうにも動かず、リダイレクトしてくれず、一旦はあきらめてしまいました。
リダイレクトについては、いろいろ書き方があるようですが、ここでは、文法の一番簡単で、分かりやすい、ロリポップのマニュアル通りの書き方、
Redirect permanent ・・・
に限定します。
WordPressのような動的生成ではなく、ホームページ・ビルダー クラシックなどで作られた、静的なHTMLファイルを対象とすることになります。
今年(2024年)に入って、「やはり」と思い、再挑戦したものの、とにかく、何としてもリダイレクトしてくれません。血まなこにして、(目薬をさしながら) いろいろなマニュアルページを読んで、あれこれしたものです。(その詳細は省略します)
最終的には、ロリポップのサーバーの設定に問題があるのでは、と思い始めて、サポートにも問い合わせました。ですが、サーバーには問題がないようで、サポートの指示通りに、再度、さらに、あれこれしましたが、どうしてもダメ。
で、最後に分かったというか、間違えていたというか、それは、「Redirect permanent」の後に来るリダイレクト元のディレクトリの書き方に、問題があったのです。
リダイレクト元のディレクトリの書き方は、.htaccess を置くディレクトリの名前を // で挟めばいいのだろう、と考えていました。これが、間違いだったようです。
テスト用にディレクトリを作って、いろいろ試してみました。その結果、やっと正解にたどり着けたのです。その間の、詳しいことは省略して、本来のフレッシャーのディレクトリで説明します。
ジャンプ元のディレクトリ fresher は、
seadragon.info/f/fresher/
と、f の下になる、第2階層なのですが、ジャンプ元のディレクトリだからと、/fresher/ と書いて済ませたのです。これが良くなくて、ドメインの直下の第1階層から書いていって、
/f/fresher
としなければならない、ようなのです。
つまり、.htaccess ファイルの正しい記述は、
Redirect permanent /f/fresher/ https://seadragon.info/fresher/
でなければならなかったのです。
この際とばかり、いろいろ試してみました。
上の図のようになっている階層だとして、 ghi のものを abc にリダイレクトさせるとして、 .htaccess ファイルの正しい記述は、
Redirect temp /test/def/ghi/ https://seadragon.info/test/abc/
となります。(テスト用なので、temp(=302)としています)これを、ghi のディレクトリに置けば動いてくれるのです。下から上へのリダイレクトでも問題ないのですね。
実は、これを test や def に置いても動くのです。不思議ですね。でも、分かりやすくするためには、ghi が適当でしょうね。
さらに、次のように2行書いても、どちらの行も動きます。
Redirect temp /test/def/ghi/ https://seadragon.info/test/abc/
Redirect temp /test/def/ https://seadragon.info/test/
ただし、これをghi に置くと上の行しか機能しません。これを test か def に置くと、問題なく動きます。
でもこれだと、test に置いて管理した方が分かりやすいでしょうね。
それにしても、リダイレクト元のディレクトリの書き方にルールがある、などとはどこでも見かけませんでした。ふと思いついて、やってみて、うまく行った、というだけのことです。何度、もうあきらめよう、と思ったかもしれません。
この記事が、他のどなたかに役立つことがあれば、この上ない幸福です。