【保存版】解説 VirtualHost 変更

Wordpress WordPress

ordpress フォルダ /var/www/html/example/wp

トップ画面 url:http://example.local/wp/ これを

トップ画面 url:http://example.local  にしたい

現在の設定

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example.local
    DocumentRoot /var/www/html/example

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

    ErrorLog ${APACHE_LOG_DIR}/example_error.log
    CustomLog ${APACHE_LOG_DIR}/example_access.log combined
    LogLevel debug
</VirtualHost>
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>

# END WordPress

db
option_id option_name option_value autoload
3 home http://example.local/wp on
2 siteurl http://example.local/wp on

==================================================
トップ画面 url:http://example.local
管理 画面 url:http://example.local/wp-admin

にするための手順

トップ画面のURLを http://example.local に変更するためには、以下の手順を実行してください。

  1. **/etc/apache2/sites-available/example.conf の修正
  2. **: DocumentRoot を wp に変更します。
   <VirtualHost *:80>
       ServerAdmin webmaster@localhost
       ServerName example.local
       ## ここ ###########
       DocumentRoot /var/www/html/example/wp

       ## ここ ###########
       <Directory /var/www/html/example/wp>
           Options Indexes FollowSymLinks
           AllowOverride All
           Require all granted
       </Directory>

       ErrorLog ${APACHE_LOG_DIR}/example_error.log
       CustomLog ${APACHE_LOG_DIR}/example_access.log combined
       LogLevel debug
   </VirtualHost>
  1. .htaccess の修正:
    RewriteBaseRewriteRule を更新します。
   # BEGIN WordPress
   <IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

   ## ここ ###########
   RewriteBase /

   RewriteRule ^index\.php$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d

   ## ここ ###########
   RewriteRule . /index.php [L]

   </IfModule>
   # END WordPress
  1. データベースの修正:
    homesiteurl の値を http://example.local に変更します。
   UPDATE wp_options SET option_value = 'http://example.local' WHERE option_name = 'home';
   UPDATE wp_options SET option_value = 'http://example.local' WHERE option_name = 'siteurl';
  1. Apacheの再起動:
    設定を反映させるためにApacheを再起動します。
   sudo systemctl restart apache2

これで、トップ画面のURLが http://example.local に変更され、管理画面のURLは http://example.local/wp-admin になります。

shimimane: この変更に伴って 現在のdbのurl部分の変更が必要ではないかと思います。
db のどのテーブルを変更していけばいいでしょうか?

GitHub Copilot: はい、データベースのURL部分の変更が必要です。以下のテーブルとフィールドを変更してください。

  1. wp_options テーブル:
  • option_namehomeoption_valuehttp://example.local に変更
  • option_namesiteurloption_valuehttp://example.local に変更

以下のSQLクエリを実行してください。

UPDATE wp_options SET option_value = 'http://example.local' WHERE option_name = 'home';
UPDATE wp_options SET option_value = 'http://example.local' WHERE option_name = 'siteurl';
``
`wp_posts` テーブルの `guid` フィールドに登録されているURLも変更する必要があります。以下のSQLクエリを実行して、`guid` フィールドのURLを一括で更新します。

sql
UPDATE wp_posts
SET guid = REPLACE(guid, ‘http://example.local/wp/’, ‘http://example.local/’)
WHERE guid LIKE ‘http://example.local/wp/%’;

このクエリは、`guid` フィールドに含まれる `http://example.local/wp/` を `http://example.local/` に置き換えます。

また、投稿内容やメディアファイルのURLも変更する必要がある場合があります。その場合は、以下のように `post_content` フィールドも更新します。

sql
UPDATE wp_posts
SET post_content = REPLACE(post_content, ‘http://example.local/wp/’, ‘http://example.local/’)
WHERE post_content LIKE ‘%http://example.local/wp/%’;

これで、`wp_posts` テーブルの `guid` フィールドと `post_content` フィールドのURLが更新されます。

# 他のテーブルにもURLが含まれている可能性があります。特に以下のテーブルとフィールドを確認し、必要に応じてURLを更新してください。

1. **`wp_postmeta` テーブル**:
   - `meta_value` フィールドにURLが含まれている場合があります。

sql
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, ‘http://example.local/wp/’, ‘http://example.local/’)
WHERE meta_value LIKE ‘%http://example.local/wp/%’;

2. **`wp_usermeta` テーブル**:
   - `meta_value` フィールドにURLが含まれている場合があります。

sql
UPDATE wp_usermeta
SET meta_value = REPLACE(meta_value, ‘http://example.local/wp/’, ‘http://example.local/’)
WHERE meta_value LIKE ‘%http://example.local/wp/%’;

3. **`wp_options` テーブル**:
   - `option_value` フィールドにURLが含まれている場合があります。

sql
UPDATE wp_options
SET option_value = REPLACE(option_value, ‘http://example.local/wp/’, ‘http://example.local/’)
WHERE option_value LIKE ‘%http://example.local/wp/%’;
“`

これらのクエリを実行することで、他のテーブルに含まれるURLも一括で更新できます。必要に応じて、他のカスタムテーブルやプラグインのテーブルも確認してください。

コメント

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