見出し画像

旧サイトURLがフォルダ名で終わっていたら.htaccessリダイレクトどう書く・・・?

画像1


結論

先に結論からいくと、
ディレクトリ構造が上記の画像のようになっている状態で、
.htaccess②に以下のように書くことで解決しました。

RewriteEngine on
RewriteRule ^$ https:/○○.com/ [L,R=301]


ここから悩んだ過程

どういう状況だったのかというと・・・

旧サイトはメインとなるサイトがルートディレクトリに直接置いてあり、ディレクトリbbにブログを置いてある構造でした。

・https://〇〇.com/(メインサイト)
・https://〇〇.com/bb/(ブログ)
↑この2つを「https://〇〇.com/aa/(新サイトWordPress)」と置き換えたい

aaディレクトリにあるindex.phpと.htaccessをドメイン直下にコピーして持ってきて、index.phpを書き換えてリニューアル自体は無事終わり、
https://www.webroad.co.jp/homepage/archives/4181
(WordPressサイトのリニューアルについてはこちらを参考にさせて頂きました。わかりやすい・・・!)

後は旧サイトブログにアクセスしたら、新サイトブログが出てくるようにリダイレクトさせておこうと思って、.htaccess①にいろいろ書いてみたんですけど、うまく動かなかったんです。

.htaccess①は本来、aa、bbディレクトリ両方に作用するはずなんですけど、
.htaccess①がaaディレクトリにある.htaccessのコピーなので、aaディレクトリ内のファイルにしか使えないっぽくて。
(aa内に仮ページを作ってリダイレクト処理を書いたらそれは動いた)

なので、旧サイトブログからのリダイレクトはbbディレクトリ内の.htaccess②に書こうと思ったんです。

bb内にあるファイルからページ単位でリダイレクトする処理を書けばいいと思ったんですけど・・・

旧サイトブログのトップページのURLが、
http://〇〇.com/bb(フォルダ名)/ 
だったんですよ。
みんなここをブックマークしてるという。

「http://〇〇.com/bb/」にアクセスするとbbディレクトリ内にあるindex.htmlを参照する形でサイトが表示されていました。

何が困ったかというと、以下の書き方でうまくいかなかったこと。

RewriteEngine on
RewriteRule ^index.html$ https://〇〇.com/ [R=301,L]

上の処理が効かなかったわけではなくて、
「https://〇〇.com/bb/index.html」からは新サイトに移動するようになったんですけど、
「https://○○.com/bb/」にアクセスした時はリダイレクトできなかったんです。

リダイレクトについて調べていると、ページ単位やフォルダ単位での書き方は載っているけど、
ファイル名じゃないアドレスの時はどうしたらいいんだろう・・・ってずっと正規表現とにらめっこしていました。

https://〇〇.com/bb/index.html だから ^index.html$

https://○○.com/bb/■■ 

「^」から「$」の間に書くのは、この■■の部分なんですよね。

そもそも何も書かなくていいのでは・・・?

RewriteEngine on
RewriteRule ^$ https:/○○.com/ [L,R=301]

そんなわけで最初の結論のこれです・・・!
問題なく動いてるのでひとまず安心。

ブログの各記事についてはページ単位のリダイレクトが使えるので、順に書き連ねていって無事完了です。

今振り返って見たらこう書くしかないよなと思うけど、
これに気づくのに一体どれだけ時間を使ったのか・・・('△';)






いいなと思ったら応援しよう!