这个问题并不是一个持续存在的问题;它有时会发生,而且我无法重现它(即使使用相同的 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] 规则,其余规则将在处理完此规则后推迟执行,因此如果该行是故意的,那么将它们放在那里是没有意义的。请将其删除并告知我们结果