如何从 .htaccess 中排除子文件夹

Posted

技术标签:

【中文标题】如何从 .htaccess 中排除子文件夹【英文标题】:How to exclude a subfolder from .htaccess 【发布时间】:2011-05-04 23:35:00 【问题描述】:

我正在使用插件用户访问管理器来限制对 Wordpress 站点中文件夹上传的访问。 此文件夹位于 example.com/wp-content/uploads/。 该插件已将这个 .htaccess 写入该文件夹:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule (.*) /index.php?uamfiletype=attachment&uamgetfile=$1 [L]
</IfModule>

在该文件夹 (/wp-content/uploads/) 中,还有一个名为 wpsc (/wp-content/uploads/wpsc/) 的文件夹,其中包含该站点商店的文件。 现在 .htaccess 工作正常,但它也限制了 wpsc 文件夹。我需要添加一个例外,以便每个人都可以访问 wpsc 文件夹。

【问题讨论】:

【参考方案1】:

在 wpsc/ 文件夹中放置一个 .htaccess 文件,内容如下:

<IfModule mod_rewrite.c>
RewriteEngine Off
RewriteBase /
</IfModule>

这会否决父文件夹中 .htaccess 文件中的重写规则

这适用于插件 WP Photo Album Plus,i.c. ../wp-content/uploads/wppa/ 文件夹。

【讨论】:

【参考方案2】:

您可以使用RewriteCond 来检查匹配的字符串:

RewriteCond $1 !^wpsc/
RewriteRule (.*) /index.php?uamfiletype=attachment&uamgetfile=$1 [L]

【讨论】:

不幸的是,这不起作用。我尝试了其他替代方法,例如 !^wpsc、!^/wpsc/、!^/wp-content/uploads/wpsc 等等,但它们也不起作用。 @Luis Herranz:好吧,既然基本路径是/,你实际上需要使用!^wp-content/uploads/wpsc/

以上是关于如何从 .htaccess 中排除子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何从重写器中排除特定文件

.htaccess & WordPress:从 RewriteRule 中排除文件夹

从htaccess重写中排除文件夹

从 .htaccess 中的密码保护中排除一个文件

htaccess 从 Basic Auth 中排除一个 url

从 HTACCESS 文件中的所有 ISAPI 重写 3 规则中排除目录