防止浏览器直接访问 Wordpress 插件的文本文件

防止浏览器直接访问 Wordpress 插件的文本文件

我有一个 Wordpress 插件“custom-plugin”,其中包含一些可帮助配置它的 .txt 文件。我想阻止浏览器直接访问这些 .txt 文件。

我以前从未使用过 htaccess,但我正在尝试编辑根 .htaccess 文件并添加以下行:

# BEGIN custom-plugin
# Block web browser access to .txt files.
RedirectMatch .*/custom-plugin/.*\.txt$ http://MyWebsite.com
# END custom-plugin

唉,它不起作用,我仍然可以直接访问https://www.MyWebsite.com/wp-content/plugins/custom-plugin/plugin_settings.txt

我是否错误地执行了 htaccess?

我所要做的就是阻止访问这些文件 - RedirectMatch 是错误的选择吗?

注意:这是根 htaccess 文件(位于public_html/.htaccess)。

答案1

不清楚为什么您的重定向不起作用(假设您的.htaccess文件中已经有其他正在运行的指令)。也许您与其他指令有冲突。

但是,如果您想阻止对这些.txt文件的访问,那么您就不想重定向请求,因此这RedirectMatch不是适合该工作的正确工具。

只需阻止对所有.txt文件的访问:

<Files "*.txt">
Require all denied
</Files>

这将返回 403 Forbidden全部HTTP 文件的请求.txt。假设您不需要特定于您的“自定义插件”。还假设 Apache 2.4+

在旁边:这些.txt/config 文件是否真的是插件持续使用所必需的,而不仅仅是安装所必需的?!

更新:我只想屏蔽我自己插件文件夹中的插件

如果您不想.htaccess在插件目录中创建额外的文件(额外的好处是它可以简单地与插件一起分发)那么您可以在根.htaccess文件中使用 mod_rewrite 指令。

以下内容需要放在文件顶部附近.htaccess任何现有的 WordPress mod_rewrite 指令:

RewriteRule ^wp-content/plugins/custom-plugin/.+\.txt$ - [F]

或者,如果您希望目录结构更加灵活一些:

RewriteRule /custom-plugin/.+\.txt$ - [F]

上述代码还会对符合以下条件的任何请求返回 403 Forbidden:RewriteRule 图案。使用标志L时不需要该标志。F替换字符串由一个连字符 ( -) 组成,表示无替代

或者,在 Apache 2.4+ 上,您可以使用 Apache 表达式:

<If "%{REQUEST_URI} =~ m#/custom-plugin/.+\.txt$#">
Require all denied
</If>

相关内容