添加此行以防止在 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 在 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

    重写引擎开启

    从此规则中排除对 /wordpress/ 子文件夹的请求

    重写条件 %{REQUEST_URI} !^/wordpress/

    前端重写规则

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

经过这些修改后,与 WordPress 相关的请求仍将由 WordPress 子文件夹处理,访问 /wp-admin/ 时,子文件夹不会暴露在 URL 中。其他请求将像以前一样重写到根文件夹中的 index.html。

相关内容