Ownedmedia ウェブ制作に役立つコンテンツを発信中!

WordPress 2020.09.15

WordPressでインストールフォルダとは異なるサブディレクトリをサイトURLに設定する

Tags: ,,

今回はタイトルの通りですが、WordPressサイトを静的サイトあるいは他のアプリケーションサイトと併用して運用したい時に使える内容です。少しレアケースかもしれませんが、備忘録として残しておきたいと思います。以前に「WordPressで作成したサイトをルートディレクトリで表示させる」という記事で紹介した、WordPressのインデックスファイルと.htaccessファイルを変更する方法の応用になります。

 

WordPressサイトをサーバーにインストールする際には、ドキュメントルート直下にコアファイルを展開するというケースはあまりなく、基本的に専用のインストールディレクトリを作成し、その中にインストールしていくケースが多いかと思います。ただ、その場合はインストールディレクトリがそのままサイトURLになるので、このディレクトリ名を任意のものに変えたいというケースがあるかと思います。今回は下記のような構成で、wordpressフォルダにWordPressをインストールして、blogディレクトリをWordPressサイトルートに設定し、https://example.com/blog/のURLでWordPressサイトのトップページが表示される想定で進めてみましょう。

/
  ┣ index.html
  .............
  ┣ wordpress/
    ┣ index.php
    ┣ .htaccess
    .............
  ┗ blog
    ┣ index.php
    ┗ .htaccess

サイトトップURL:https://example.com
WordPressインストールURL:https://example.com/wordpress/
WordPressサイトトップURL:https://example.com/blog/

 

WordPress管理画面での設定

まずはWordPressの管理画面にログインし、サイドのメニューから「設定」→「一般」にアクセスし、サイトのURLを設定していきます。確認するところは下記の2箇所になります。

WordPress アドレス(URL)→ https://example.com/wordpress/
サイトアドレス(URL)→ https://example.com/blog/

 

今回は上記の構成を前提にしていますので、ディレクトリ名などは適宜プロジェクトに合わせて変更します。

 

WordPressサイトルート用のディレクトリとファイル作成

続いてWordPressのトップページが表示されるURLのディレクトリとその中に入るファイルを作成していきます。ディレクトリ名はそのままURLのパスになるので、適宜名前をつけて作成します。そしてその中には「index.php」と「.htaccess」の2つのファイルを作成します。

 

まずはindex.phpを下記のように作成します。こうすることにより、このディレクトリにアクセスすると、WordPressのインストールフォルダに入っているWordPressのインデックスファイルを参照するようになります。つまり、このディレクトリからWordPressサイトのシステムにアクセスすることができます。

【blog/index.php】※一部抜粋

<?php
  ............
  require ('../wordpress/wp-blog-header.php');

 

続けて.htaccessの方も下記のように編集していきます。こちらもリライトルールを設定することで、WordPress内で設定したパーマリンクがこのディレクトリ配下のURL使えるようになります。

【blog/.htaccess】

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /wordpress/
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /wordpress/index.php [L]
</IfModule>

 

設定自体はこれだけでOKですが、一応、WordPressのコアファイル内にあるindex.phpと.htaccessも確認しておきますと、このような設定になっているかと思います。特に修正する必要はありませんが、うまく表示されない場合にはこれらのファイルが同じ設定になっているかを確認してみてください。

【wordpress/index.php】※一部抜粋

<?php
  ............
  require __DIR__ . '/wp-blog-header.php';
  /* もしくは下記のような記述 */
  require( dirname( __FILE__ ) . '/wp-blog-header.php' );

 

WordPressのインストールディレクトリ直下の.htaccessの方は、サイトルート用のディレクトリに入っているものと同じ記述になりますね。

【wordpress/.htaccess】

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /wordpress/
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /wordpress/index.php [L]
</IfModule>

 

これでWordPressのインストールディレクトリと異なるサブディレクトリでWordPressのサイトを表示させることができました。あまり使われるケースは少ないかもしれませんが、メディアサイト・ブログサイトだけ独立させてWordPressで運用したい、でもURLを柔軟に変えれるようにもしたいというケースには有効なのではないでしょうか。

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?