BLOG

ブログ

BRANDING / TRENDKILL

WordPressのスラッグと実在するディレクトリが重複したときの回避法

wordpress

セブンシックスのダイチです。
今回は、WordPressのスラッグと実在するディレクトリが重複したときの回避法です。

wordpressのページが表示できない!

リニューアル案件などで、新たにwordpressを導入するとき、過去の静的ページを残さなければならないケースがあります。例えば、リニューアルするページには含まないけど、ページは消さずに残しておきたいスペシャルコンテンツ、、みたいな。

そのとき、残すページのディレクトリが、新しくWordPressで作るページのスラッグと重複してしまうと、WordPressのページが表示できなくなります。

例を出しますね。

例えば、こんな状況

残しておきたいページ:
https://www.xxx.co.jp/corporate/special.html

WordPress側で作成した会社概要ページ:
https://www.xxx.co.jp/corporate/

(固定ページのスラッグが「corporate」)

この状態で、WordPress側の会社概要ページを見ようとすると、エラーになります。

WordPressのURLは、スラッグなどのパラメータ値をURLの形に置き換えているものなので、「corporate」というディレクトリは実際には作られません。

でも、今回の例ではspecial.htmlが置かれている「corporate」というディレクトリが実在していて、名前もスラッグと重複しています。WordPress側の会社概要ページにアクセスしたつもりが、実在するcorporateディレクトリのほうを見にいってしまうことで、WordPressの会社概要ページが表示できなくなっているんですね。

WordPressサイトは、index.phpを起点としています。実在するディレクトリのほうにindex.phpがなければ、それはWordPress管理外ということです。

回避策

wordpressの「index.php」を実在するディレクトリに配置することで、この問題を回避することができます。

1.index.phpを配置

WordPressディレクトリにあるindex.phpをコピーして、実在するディレクトリに配置します。
https://www.xxx.co.jp/corporate/index.php

2.パスを書き換え

index.phpを編集して、wp-blog-header.phpまでのパスを通します。
require( dirname( __FILE__ ) . '/../wp-blog-header.php' );

3.アクセスしてみる

すると、エラーだったページがWordPress管理下に入るため正常に表示されるようになります。
https://www.xxx.co.jp/corporate/

まとめ

そうならないように進められるのが一番ですが、世の中にはそうもいかない状況ってのがあるんですよ、はは。

前田 大地

Designer / Developer

前田 大地

沼津高専中退。デザイン会社、システム開発会社を経てセブンシックスを設立。マーケティング、デザイン、テクノロジーに精通するオールラウンダーとして、県内の中小企業に向けた戦略型ホームページ制作を開始。一方で、都内代理店からの要請で大企業案件にも多数参加。企業が本当に必要とするホームページ制作とは何か、を日々探求している。

関連記事

SEVENSIX NOTESEVENSIX NOTE