URLにサブフォルダが公開されないようにするには、この行を追加します。

URLにサブフォルダが公開されないようにするには、この行を追加します。

静的 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 ファイルにいくつか変更を加えます。方法は次のとおりです。

  1. WordPress サブフォルダ ( e.g.,/wordpress/) 内の .htaccess ファイルを次のように変更します。
RewriteEngine の RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L]

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 に公開されないようにすることができます。

  1. ルート .htaccess ファイルでは、書き換えのルールを次のように簡素化できますindex.html

    RewriteEngine オン

    /wordpress/ サブフォルダへのリクエストをこのルールから除外する

    書き換え条件 %{REQUEST_URI} !^/wordpress/

    フロントエンドの書き換えルール

    RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]

これらの変更により、WordPress 関連のリクエストは引き続き WordPress サブフォルダーによって処理され、/wp-admin/ にアクセスしたときにサブフォルダーが URL に公開されなくなります。その他のリクエストは、以前と同様にルートフォルダーの index.html に書き換えられます。

関連情報