重写RewriteRule以在路径中包含一个特定的php文件

时间:2016-07-29 16:41:10

标签: regex apache .htaccess

我继承了一个大型的WordPress网站:当我发现用户没有加载特定的PHP页面时,我正在查看Wordfence实时日志。我调查并通过FTP客户端发现该文件应该是它应该的位置。我使用了一些网络工具(在Chrome,Opera和Firefox中),我再次发现该文件正在返回404.

所以,我在网站的根目录中找到了一个包含这一行的简短htaccess文件:

RewriteRule ^wp-content/(.*)\.php$  [R=404,L]

我评论了这个并重新加载了网站:没有错误了。我必须说,错误显然不会对网站造成任何陌生感。但我想消除它。

我认为这条规则是为了避免有人可以对此目录和该目录中的任何其他PHP文件发出直接HTTP请求:在这种情况下,我认为我所说的这个文件是从include中调用的,而不是直接调用,因为在WordFence中,我看到的是用户直接访问其他页面后出现的错误,而不是特别是这个页面。

无论如何,我想重写这个规则,以便它保持与现在相同,除了那个php页面。 PHP页面位于主题的路径中:

可湿性粉剂内容/主题/ THEMENAME /型芯/ CSS / customized.css.php

这可能吗?任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

如果要从RewriteRule中排除该特定的php文件,可以在正则表达式中添加负向前瞻,如下所示:

RewriteRule ^wp-content/(?!themes/.*/core/css/customized\.css\.php$)(.*)\.php$  [R=404,L]