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

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

今回はタイトルの通りですが、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を柔軟に変えれるようにもしたいというケースには有効なのではないでしょうか。
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

comments

  • TC5161

    2021.5.24
    オガワさま、ご返信遅くなり恐れ入ります。こちら、ディレクトリを見直し、適切に index.php を設定することで対応できました。 ご丁寧に回答いただきまして誠にありがとうござまいした。とても助かりました。
  • オガワ シンヤ

    2021.5.21
    TC5161さん こんにちは、当メディアサイトをご覧いただきありがとうございます。コメント内容からの推測になりますが、example.com/pathのディレクトリ配下に管理画面用のディレクトリが含まれていないのではないでしょうか。こちらの記事の内容としては、WordPressのソースコードが入っているディレクトリとサイトのURLで使うパスを分けたいケースになりますので、改めてディレクトリ構成などを確認してみてはいかがでしょうか。
  • TC5161

    2021.5.21
    オガワ さま、本記事、ちょうど同様の環境を構築しようとしていましたので大変参考になりました!ありがとうございます。 example.com/path という URL でサイトは表示されるのですが、example.com/path/wp-admin としたときに example.com/wp-admin とリダイレクトしてしまい、本来のログイン画面が表示されません。admin については何か別途設定が必要なのでしょうか? (example.com には別の WP をホストしているため、そちらの admin 画面に入ってしまいます)。 もし解決策をご存知でしたらアドバイスいただけませんでしょうか。どうぞよろしくお願いいたします。

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram