EストアーのWordPressでえらい目にあった件
最近、モール系外のカートシステムでオプションとしてWordpressが使えるようになっているところが多く出てきた。
そもそもフリーで使えるWordpressをオプションでン万円も使って入れるのはどうかとも思うが、コンテンツを充実させるには・・・まぁいいんだろう。時代の流れというやつか。
まぁ、どうでもいい。
で、最近そっちのほうのWordpressを触り始めたわけではある。
そして、本日、リダイレクトの兼ね合いでかなりハマった。
Eストアーのカートで、とある2つのECにWordpressを導入したのだが、えらい目にあうことに。
一つ目の導入は何の問題も無くうまくいった。
まぁ、できて1年位のショップだから、元々ストアーのサーバーの中身がきれいだったってのがある。
ブログのマルチ化もテーマのカスタマイズもスムーズに行き、ブログ内の回遊も問題なくできた。
ちゃんと、指定されたディレクトリ上で正常に動き、思いのほかさっくりと終わった。
xxxxx.com/dirのような状態。
が、問題は二つ目。
こっちはサービスが始まって、そこそこの年数が経ってるサイト。
WordPressを導入して、ブログのマルチ化して、自前のテーマのスケールモデルをちょこちょこといじって、軽く回遊性のチェックしてたら問題が発生。
単純に、404テンプレートにhome_url()でのリダイレクトをいれただけであったが、これがドツボだった。
「リダイレクトループがあります。」
は?
そんなバカな。
一つ目のサイトでは同じようにやってうまくいっていたぞ?
???
wp-configやらhtaccessを一つ目と二つ目と比較して調べたが差異はない。
うまくいかないはずがない。
一つ目はxxxxx.com/dirでアクセス。うまくいく。
一つ目はxxxxx.com/dirでアクセス。うまくいかない。
何が起きたんだ?
1時間ほど調べても理由がわからない。
少なくともWordpress側に問題はない。
俺の導入方法にも手違いはなかった。
イミフだったので、とりあえずhtaccessを調べた延長線で、大本のサイトを調べることに。
なんのことはない。
こっちの差異はすぐに見つかった。
一つ目のサイト → ドメインでアクセスした際、xxxxx.comでつながる。
二つ目のサイト → ドメインでアクセスした際、xxxxx.com/index.htmlでつながる。
そこで二つ目のサイトの中身を調べる。
index.htmlとindex.htmが存在している。
通常、Eストアーのカートではindex.htmがあった場合、そっちを優先して読みに行くはずだ。
つまり、ドメイン直でつながったときに、htaccessでindex.htmlに強制的につながるようにURLを書き換えてるんだろう。
が、それらしきhtaccessは見当たらない。
わざと不具合が出るように設定してもうんともすんとも。
あれ?多分これ別のサーバーで同じドメイン設定してリダイレクトしてんじゃね?
さしあたり、URLの行頭から行末をグルーピング→/index.htmlをつけた先へリダイレクト、のような構図。
全てが腑に落ちた。
一つ目のサイト
- xxxxx.com/dirでアクセス
- WordPressのhtaccess側が行末にスラッシュを付けてdirへ正しく移動
二つ目のサイト
- xxxxx.com/dirでアクセス
- 大本のhtaccessが走り、xxxxx.com/dir/index.htmlとなる。
- dirの下はWordpressの管轄域。
index.htmlなんてファイルやWordpress上のディレクトリは存在しないので、404テンプレートへ入る。 - home_url()で文字通りのホームディレクトリであるxxxxx.com/dirへ再びリダイレクト
- 1へ戻ってループが発生。
誰だよ。こんなアホみたいなリダイレクトを設定した野郎は。
いや、だれだかわかってんだけどさ。
なぁ?
まぁ、問題はわかった。
とはいえ、検索エンジンにindex.html付きのURLがスタックされている+htaccessを設定している同一のドメイン情報を持ったサーバーが分からない以上、どうしようもない。
とりあえず、home_url()へスラッシュを付与してhome_url(‘/’)に。
これで、二つ目のサイトには以下のフローが成り立った。
- xxxxx.com/dirでアクセス
- 大本のhtaccessが走り、xxxxx.com/dir/index.htmlとなる。
- dirの下はWordpressの管轄域。404テンプレートへ入る。
- index.htmlなんてファイルやWordpress上のディレクトリは存在しないが、xxxxx.com/dir/となっているのでちゃんと指定したディレクトリにリダイレクトできる。
正しく対症療法だが、原因が分かった上なのでまぁとりあえずはよしとしておこう。
でもまぁ、今回のケースはレアケースなんだろうが、index.htmの優先読み出しがある場合でも同じような事起きそうで怖いです^q^