Apache:给定的路径包含通配符

Apache:给定的路径包含通配符

这个问题并不是一个持续存在的问题;它有时会发生,而且我无法重现它(即使使用相同的 URL)。

[2011 年 12 月 20 日星期二 09:07:12] [错误] [客户端 66.249.66.169] (20025) 给定的路径包含通配符:访问 /?p=2463 失败

[2011 年 12 月 20 日星期二 10:10:30] [错误] [客户端 110.0.107.198] (20025) 给定的路径包含通配符:访问 /proxyimages.php?url=http%3A%2F%2Fi.imgur.com%2F2DKZ0.jpg&mimeType=image%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

答案1

问题是 URL 中插入了一个需要转义或删除的字符。Apache 中的某个规则正在放置该字符。您必须考虑任何重写规则或 AliasMatch 规则。

复制现有httpd.conf文件并在其位置放置 vanilla conf。查看问题是否存在。复制diff两个文件并开始一次添加一个块并测试您的服务器。如果您使用mod_alias,请禁用它并查看问题是否仍然存在。您还可能在某个 .htaccess 文件中继承了一些麻烦的正则表达式。检查这些并排除那里的任何可能性。

一旦您缩小了问题范围,您可以报告,我们可以提供更多帮助。

编辑1

这听起来像是应用程序错误。可能是您的某个 Wordpress 插件出了问题。这些错误表明有东西将未转义的字符放入了您的 URL 中。也许是一个解码 URI 函数。主要关注的是正在进行的任何重写,以提取 Web 服务器文档根目录之外的文件和文档。

禁用 wordpress 安装中的所有插件并检查错误。一次添加一个插件,然后查看错误何时再次出现。

答案2

.htaccess 文件中的第 5 行看起来很奇怪。另外,据我所知,它不是 WordPress 中默认的永久链接重写规则集的一部分。尝试删除(或只是注释掉)该行。这就是我所说的:

RewriteRule ^index\.php$ - [L]

此外,由于这是一条 [L] 规则,其余规则将在处理完此规则后推迟执行,因此如果该行是故意的,那么将它们放在那里是没有意义的。请将其删除并告知我们结果

相关内容