WordPressをサブディレクトリに設置したまま、ドメイン直下にスマート表示させる設計術【VirtualHost構成】

サーバー
スポンサーリンク

WordPressを /wordpress サブディレクトリにインストールする構成は、 「メンテしやすい」「複数サイトを同居させやすい」「本体をいじらず切り離せる」など、 運用やセキュリティの面で多くの利点があります。

しかしこの構成だと、アクセスURLが https://example.com/wordpress/index.php となってしまい、 ユーザーにとってはやや冗長で見栄えが悪くなることがあります。

本記事では、WordPressの物理的な設置場所を動かさずに、URLだけをスマートに見せる方法、 つまり https://example.com/index.php で表示させる方法を、ApacheのVirtualHost構成で解説します。

想定読者

  • サブディレクトリにWordPressを置いたが、ドメイン直下で公開したい人
  • XserverやVPS環境で初めてWordPressを構築している人

環境

  • Ubuntu 24.04 LTS
  • Apache 2.4.58
  • WordPress 6.5.4

 なぜ index.php をコピーせずに Apache で制御するのか?

index.php をルートにコピーして中身を書き換える方法は、WordPress公式にも紹介されている簡易手法です。

ただし、

  • WordPressのアップデートで本体の構造が変わった場合に追従しにくい
  • メンテ時に「コピーしたのを忘れてた」というヒューマンエラーが起きやすい
  • サブディレクトリ構成を他サイトと共有していく場合、煩雑になる

といった理由から、本質的にはWebサーバーで制御した方が安全・確実です。


 実際の構成例(Apache VirtualHost)

HTTP(ポート80)

<VirtualHost *:80>
    ServerName rm-engineering.info
    Redirect permanent / https://example.com/
</VirtualHost>

HTTPS(ポート443)

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /var/www/html/wordpress
    DirectoryIndex index.php index.html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.como/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    <Directory /var/www/html/wordpress>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example-error.log
    CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>

このように、Apacheレベルで /wordpress をルートとしてマウントすることで、 ユーザーからは https://example.com にアクセスしているように見えつつ、 実体は /var/www/html/wordpress 配下のWordPressがそのまま動作します。


Apacheのモジュールが有効か確認しよう

以下のモジュールが有効になっていない場合、設定が反映されないことがあります:

  • rewrite(パーマリンク・リダイレクト)
  • ssl(HTTPS通信)
  • headers(CDNやキャッシュ制御を使うとき)

以下のコマンドで有効化できます:

sudo a2enmod rewrite ssl headers
sudo systemctl restart apache2

a2enmod はDebian/Ubuntu系(Xserver VPSなど)でのコマンドです。


.htaccess のリダイレクトはどうする?

以前 /wordpress/ へのリダイレクトを .htaccess で設定していた場合、 Search Console 上で「リダイレクトがあります」と警告が出る可能性があります。

その場合は以下のような .htaccess のリダイレクト記述を コメントアウト するだけでOKです:

# RewriteEngine On
# RewriteCond %{REQUEST_URI} ^/wordpress/
# RewriteRule ^wordpress/(.*)$ https://example.com/$1 [R=301,L]

WordPress内のURLやリンクはどうなる?

https://example.com/wordpress/index.phpの設定から変更した場合、投稿や固定ページの中で /wordpress/ を含んでいないかをチェックしましょう。 一括チェックには wp_posts テーブルに対してSQLを投げて確認するのが確実です。 ただし、多くのテーマやエディタでは site_url() などで自動解決されるため、 特別なリンクや画像を手書きしていなければ問題ない場合がほとんどです。


まとめ:シンプルな見た目と、拡張性の高い設計を両立

  • WordPress本体は /wordpress のまま、メンテ性・拡張性を確保
  • URLは https://example.com のようにスッキリ見せてUX向上
  • ApacheのVirtualHost設定だけで、構造的にスマートなサイト設計が可能に

「コピーして調整」ではなく「設計で解決」することで、将来のトラブルを未然に防ぐ構成管理を実現しましょう。

PR

コメント

タイトルとURLをコピーしました