固定ページのスラッグと同名のディレクトリを配置したい場合の対処法

Webサイトのリニューアル案件で、WordPressサイトに静的ファイルのみで構成された旧サイトのコンテンツの一部をそのまま流用したいという要望があったので、次のような方法が可能か試してみました。

サイト構成のイメージ

下図サイトマップのように「製品案内」(products)コンテンツ下に、WordPressで作成した現行品のページ旧サイトの生産終了品のページ(静的ファイル)を混在させるものと仮定します。

ファイル構成

ディレクトリとファイルを配置

ルートディレクトリ以下の主な構成は次の通り。
旧サイトと同じように「http://ドメイン名/products/eop/」で静的ファイルのページにアクセスできるようにディレクトリとファイルを配置します。

ルートディレクトリ
 ├index.php(WordPressの先頭ファイル)
 ├wp(WordPressの構成ファイルディレクトリ)
 ├products/eop/index.html(静的ファイルのディレクトリ)
 └その他ディレクトリ

WordPressの構成ファイルをサブディレクトリ「wp」に配置する方法については公式マニュアルをご参照ください。
(参考)WordPress を専用ディレクトリに配置する

固定ページ「products」にアクセスしてみる

この状態で「http://ドメイン名/products/」にアクセスするとWordPressの固定ページ(スラッグ名:products)が表示されず、配置した静的ファイルのディレクトリ「products」の内容一覧が表示されてしまいます。

indexofproducts

多くのホスティングサービスではセキュリティ等の都合で「Index of 〜」のファイル一覧を表示しないように設定されていますので、「403 Forbidden」が表示されると思います。

固定ページを表示するための対処法

index.phpファイルを旧サイトのディレクトリにコピー

固定ページのスラッグ「products」と重複している静的ファイルのディレクトリ「products」にWordPressの先頭ファイル「index.php」をコピーします。

ルートディレクトリ
 ├index.php(WordPressの先頭ファイル)
 ├wp(WordPressの構成ファイルディレクトリ)
 ├products/index.php(先頭ファイルのindex.phpをコピーして配置)
 ├products/eop/index.html(静的ファイルのディレクトリ)
 └その他ディレクトリ

コピーしたindex.phpの内容を編集

コピーした「index.php」ファイルをテキストエディタで開き、
最後の行を下記のように変更します。 

▼変更前

▼変更後

ここまでの状態で「http://ドメイン名/products/」にアクセスすると
リダイレクトループに陥ります

リダイレクトループの回避

リダイレクトループの回避には、下記の記述をfunctions.phpに追加します。

以上で無事当初のサイトマップのイメージ通りWordPressの固定ページ「products」と旧サイトの静的ファイル「products/eop/index.html」を混在してサイトを運用できるようになりました

(参考)同ディレクトリにWPと静的を共存させようとしたらリダイレクトループになった

PR

DO WP 管理人