Apache:给定的path包含通配符

问题不是一个持久的问题; 它有时会发生,我无法重新创build它(即使使用相同的url)。

[Tue Dec 20 09:07:12 2011] [error] [client 66.249.66.169](20025)给定的path包含通配符:访问/?p = 2463失败

[Tue Dec 20 10:10:30 2011] [error] [client 110.0.107.198](20025)给定path包含通配符:访问/proxyimages.php?url=http%3A%2F%2Fi.imgur.com %2F2DKZ0.jpg&mimeType =图片%2Fjpeg失败

我正在使用一个WordPress的博客进行了一些修改,自从一段时间以来,我已经从Apache获得了很多这些错误,谷歌结果这个问题是没有用的…

有任何想法吗?

编辑:

一些虚拟主机只与干净的httpd.conf不同

<VirtualHost *:80> DocumentRoot C:/xampp/htdocs/ ServerName 94.102.49.102 </VirtualHost> <VirtualHost *:80> DocumentRoot C:/xampp/htdocs/site1 ServerName www.site1.com ServerAlias site1.com *.site1.com </VirtualHost> <VirtualHost *:80> DocumentRoot C:/xampp/htdocs/site2 ServerName www.site2.info ServerAlias site2.info *.site2.info </VirtualHost> <VirtualHost *:80> DocumentRoot C:/xampp/htdocs/site3 ServerName www.site3.com ServerAlias site3.com *.site3.com </VirtualHost> 

wordpress生成的.htaccess

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 

问题是有一个字符被插入到需要转义或删除的URL中。 某些规则在apache某处放置那个字符。 您必须考虑任何重写规则或AliasMatch规则。

复制你现有的httpd.conf文件,并把vanilla conf放在它的位置。 看看问题是否存在。 对这两个文件进行diff ,然后逐个添加块,然后testing您的服务器。 如果您使用mod_alias ,请禁用该function并查看问题是否仍然存在。 也可能是在某处.htaccess文件中inheritance了一些麻烦的正则expression式。 检查那些,并排除在那里的可能性。

一旦你缩小了这个问题,你可以回报,我们可以有更多的帮助。

编辑1

这听起来像是一个应用程序错误。 这可能是你的一个WordPress插件的东西。 这些错误表明,某些东西正在将未转义的字符扔到您的url中。 也许是一个decodeURI函数。 主要关心的是任何正在发生的重写操作,都会导致Web服务器文档根目录之外的文件和文档。

禁用wordpress安装中的所有插件并检查错误。 将它们重新添加回来,看看错误何时重现。

你的.htaccess文件的第五行看起来很有趣。 另外,AFAIK,它不是WordPress的默认永久链接重写规则集的一部分。 尝试删除(或只是注释掉)该行。 这是我正在谈论的那个:

 RewriteRule ^index\.php$ - [L] 

而且,因为这是一条规则,其余的则在这条规则被处理之后被推迟,所以把它们放在那里是没有意义的。 请删除它,让我们知道结果