静的 Web サイトがルート フォルダーにあり、Wordpress がサブフォルダーにあるという設定があります。そのため、すべてのリクエストを index.html に書き換え、Wordpress 関連のリクエストはすべてサブフォルダーに送る必要があります。私は、ルートに 1 つ、Wordpress サブフォルダーに 1 つ、合計 2 つの .htaccess ファイルを使用してこれを実現しています。
ルート .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-.+
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule (wp-.*)$ /wordpress/$1 [L]
# Rewrite rule for frontend
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Wordpress サブフォルダ .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
これは機能しますが、開こうとすると/wp-admin/
リダイレクトされ、/wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fwordpress%2Fwp-admin%2F&reauth=1
サブフォルダーが URL に公開されます。
サブフォルダを非表示にする方法はありますか?
答え1
WordPress 関連のリクエストの URL でサブフォルダーを非表示にするには、設定を少し変更します。ルートの .htaccess ファイルはそのままにして、WordPress サブフォルダーの .htaccess ファイルにいくつか変更を加えます。方法は次のとおりです。
- WordPress サブフォルダ (
e.g.,
/wordpress/) 内の .htaccess ファイルを次のように変更します。
URLにサブフォルダが公開されないようにするには、この行を追加します。
書き換え条件 %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L]
RewriteCond %{REQUEST_URI} !^/wordpress/ 条件を追加することで、/wp-admin/ フォルダーへのリクエストがこの書き換えルールの影響を受けないようにし、サブフォルダーが WordPress 関連のリクエストの URL に公開されないようにすることができます。
ルート .htaccess ファイルでは、書き換えのルールを次のように簡素化できます
RewriteEngine オンindex.html
。/wordpress/ サブフォルダへのリクエストをこのルールから除外する
書き換え条件 %{REQUEST_URI} !^/wordpress/
フロントエンドの書き換えルール
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]
これらの変更により、WordPress 関連のリクエストは引き続き WordPress サブフォルダーによって処理され、/wp-admin/ にアクセスしたときにサブフォルダーが URL に公開されなくなります。その他のリクエストは、以前と同様にルートフォルダーの index.html に書き換えられます。