新增此行以防止暴露 URL 中的子資料夾

新增此行以防止暴露 URL 中的子資料夾

我有一個設置,靜態網站位於根資料夾中,Wordpress 位於子資料夾中。所以我需要將所有請求重寫到index.html,而所有與Wordpress相關的請求都應該轉到子資料夾。我使用兩個 .htaccess 檔案來實現這一目標:一個位於根目錄中,另一個位於 Wordpress 子資料夾中。

根.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 子資料夾 (/wordpress/) 中的 .htaccess 文件,e.g.,如下所示:
RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L]

新增此行以防止暴露 URL 中的子資料夾

RewriteCond %{REQUEST_URI} !^/wordpress/

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

透過新增 RewriteCond %{REQUEST_URI} !^/wordpress/ 條件,您可以確保對 /wp-admin/ 資料夾的請求不會受到此重寫規則的影響,因此子資料夾不會在 URL 中公開用於WordPress相關請求。

  1. 在根 .htaccess 檔案中,您可以將重寫規則簡化為index.html

    重寫引擎開啟

    從此規則中排除對 /wordpress/ 子資料夾的請求

    RewriteCond %{REQUEST_URI} !^/wordpress/

    重寫前端規則

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

透過這些修改,與 WordPress 相關的請求仍將由 WordPress 子資料夾處理,並且在存取 /wp-admin/ 時,該子資料夾不會在 URL 中公開。其他請求將像以前一樣重寫到根資料夾中的index.html。

相關內容