WordPressを /wordpress
サブディレクトリにインストールする構成は、 「メンテしやすい」「複数サイトを同居させやすい」「本体をいじらず切り離せる」など、 運用やセキュリティの面で多くの利点があります。
しかしこの構成だと、アクセスURLが https://example.com/wordpress/index.php
となってしまい、 ユーザーにとってはやや冗長で見栄えが悪くなることがあります。
本記事では、WordPressの物理的な設置場所を動かさずに、URLだけをスマートに見せる方法、 つまり https://example.com/index.php
で表示させる方法を、ApacheのVirtualHost構成で解説します。
Contents
想定読者
- サブディレクトリに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


コメント