未検証( ..)φメモメモ
ファイルの置き場所を変えずにURLを変える場合、内部リダイレクトを使用して、サーバーが実際のファイルの場所を処理する一方で、ユーザーには新しいURLを表示する方法があります。WordPressの場合、htaccess ファイルでこの設定を行います。
以下に具体的な手順とコード例を示します。
手順
WordPressのルートディレクトリにある .htaccess ファイルを編集:
通常、WordPressインストールディレクトリに .htaccess ファイルがあります。
このファイルを編集します。
もし .htaccess ファイルがない場合は、新しく作成します。
.htaccess ファイルに以下のコードを追加:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# サブディレクトリの名前をここに入力 (例: blog)
RewriteRule ^サブディレ/(.*)$ /$1 [L]
# ここからWordPressの標準のリライトルール
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
具体的な例として、サブディレクトリ が blog という名前の場合は、
以下のようになります:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# blog サブディレクトリからルートへの内部リダイレクト
RewriteRule ^blog/(.*)$ /$1 [L]
# ここからWordPressの標準のリライトルール
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
説明
RewriteRule ^blog/(.*)$ /$1 [L]:
^blog/(.*)$:blog サブディレクトリ以下のすべてのパスにマッチします。
/$1:blog を取り除いて、残りの部分をルートディレクトリにマッピングします。
[L]:このルールがマッチした場合、他のルールは適用されないようにします。
WordPressの標準リライトルール:
RewriteRule ^index.php$ - [L]:index.php への直接アクセスはそのまま処理します。
RewriteCond %{REQUEST_FILENAME} !-f:リクエストされたファイルが存在しない場合。
RewriteCond %{REQUEST_FILENAME} !-d:リクエストされたディレクトリが存在しない場合。
RewriteRule . /index.php [L]:すべてのリクエストを index.php に渡します(WordPressのフロントコントローラー)。
この設定により、ユーザーが example.com/blog/post-title にアクセスすると、内部的に example.com/post-title にリダイレクトされます。ただし、実際のファイルの場所は変更されません。
注意点
パーマリンク設定: WordPressのパーマリンク設定を確認し、適切な構造に設定されていることを確認します。
キャッシュのクリア: ブラウザのキャッシュをクリアして、新しい設定が正しく反映されることを確認します。
テスト: いくつかのURLをテストして、期待通りに動作するか確認します。
これにより、WordPressサイトでファイルの置き場所を変更せずにURL構造を変更することができます。