2026年7月28日

  • WordPressサブディレクトリ運用時のトラブルと解決方法

    -ChatGTPの助けを借りて-


    自宅サーバー立ち上げで立ち上げたはずのサーバーがうまく動作しない。具体的には、WordPressインストールディレクトリを公開URLに表示させないようにしたところ、ディレクトリは公開されない設定には成功した。しかし、wordpressの標準でついてるブロックエディタ(Gutenberg)で編集した投稿内容が保存ができない。保存ボタンを押すと保存中のまま進行しない。

    という状況に陥ってしまいました。いくらやっても解決しないので、困ったときのChatGTPだのみです。ChatGPT(GPT-5.5)に調査を依頼し、一緒に原因を一つずつ切り分けていくことにしました。

    数時間にわたり、WordPress・Apache2の設定について順番に確認した結果、原因は、幾つかの設定ミスであったことが判りました。

    同じ症状で困っている方の参考になればと思い、ChatGTPと一緒に解決した方法をまとめました。

    構成

    • OS:Ubuntu 24
    • Webサーバー:Apache2
    • WordPress本体:/var/www/html/****
    • 公開URL:https://kagaku.info
    • WordPressアドレス:https://kagaku.info/****
    • サイトアドレス:https://kagaku.info

    発生した問題

    WordPressのインストールディレクトリを公開URLに表示しない設定後、次の現象が発生しました。

    • ブロックエディタ(Gutenberg)で保存すると「保存中」のまま終了しない
    • https://kagaku.info/wp-json/Not Found
    • パーマリンクを「基本」以外に設定すると記事が Not Found になる

    原因

    1. Apacheの mod_rewrite が無効だったため、WordPressのリライトルールが機能していなかった。
    2. 000-default.confwordpress.conf の2つのVirtualHostが同時に有効になっており、DocumentRoot が競合していた。
    3. 000-default.confAllowOverride All の設定がなく、.htaccess のリライトルールが適用されていなかった。

    解決方法

    1. mod_rewrite を有効化

    sudo a2enmod rewrite
    sudo systemctl restart apache2
    

    2. 000-default.conf を修正

    DocumentRoot/var/www/html とし、次の設定を追加。

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    

    3. wordpress.conf を無効化

    sudo a2dissite wordpress.conf
    sudo systemctl reload apache2
    

    これにより、VirtualHostの競合を解消されました。

    動作確認

    以下を確認し、すべて正常に動作しました。

    • /wp-json/ がJSONを返す
    • パーマリンクが正常に表示される
    • ブロックエディタで保存できる
    • サイトが https://kagaku.info で正常に表示される

    現在の構成

    • 有効なVirtualHost:000-default.conf のみ
    • DocumentRoot/var/www/html
    • WordPress本体:/var/www/html/****
    • ルートの index.php から wordpress/wp-blog-header.php を読み込む構成

    今回のトラブルは複数の要因が重なっていましたが、ChatGTPの力を借りて、一つずつ切り分けて原因を特定できたため、根本的な解決に至りました。今後同様の構成を構築する際にも役立つ手順になると思います。

    投稿日:

    更新日: