我有一個設置,靜態網站位於根資料夾中,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 檔案進行一些更改。您可以這樣做:
- 修改 WordPress 子資料夾 (/wordpress/) 中的 .htaccess 文件,
e.g.,
如下所示:
新增此行以防止暴露 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相關請求。
在根 .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。