我有一个 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>