如果 URI 包含字符串并且与某种文件类型不匹配,如何进行 mod 重写?



我有一个文件夹(特别是WordPress中的wp内容),我想保护它不被人们直接访问。例如,如果你访问:

http://example.com/wp-content/themes/mytheme

我希望你得到一个404错误消息或被重定向到其他地方。如果不保护此目录,服务器将抛出500错误。现在,我在这个文件夹中有一个.htaccess文件,它工作得很好:

Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js|ico|eot|svg|ttf|woff|json|pdf)$">
Allow from all
</Files>

有没有办法用mod_rewrite来实现这一点?我想说的是:

  • 如果不是这些文件类型中的任何一种,并且在URI中包含字符串"wp-content",则重定向到404(甚至主页)

注意:我之所以想要Mod Rewrite方法,是因为最终托管它的人使用的是Windows环境,并且将使用web.config(IIS)的简单Mod_Rewrite转换器。

尝试:

RewriteEngine On
RewriteCond %{THE_REQUEST} /wp-content/
RewriteCond %{REQUEST_URI} !.(xml|css|jpe?g|png|gif|js|ico|eot|svg|ttf|woff|json|pdf)$ [NC]
RewriteRule ^ - [L,R=404]

要重定向到主页,请将最后一行替换为:

RewriteRule ^ / [L,R]

最新更新