我在我的 /httpdocs 目录中设置了一个网站,并且有自己的 htaccess 文件,而我在 /httpdocs/blog 中还有一个 WordPress 博客,使用标准的 WordPress htaccess 文件。我一直在我的 Apache 错误日志中看到以下错误:[error] [client #.#.#.#] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/vhosts/somedomain.com/httpdocs/blog/index.pl。我添加了 "Options +FollowSymLinks",因为这似乎已经解决了其他人的问题(但对我没有用)。主要的 .htaccess 如下所示:WordPress 的 .htaccess 如下所示:
我还想知道为什么会报告错误为“index.pl”,因为在 /blog 目录中没有 perl 脚本。所以,经过一些搜索,我在 /var/www/vhosts/somedomain/conf/ 中找到了一个由 Plesk 生成的 httpd.include 文件,其中包含一些 perl 处理器代码:
Options +FollowSymLinks
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPres
我还想知道为什么会报告错误为“index.pl”,因为在 /blog 目录中没有 perl 脚本。所以,经过一些搜索,我在 /var/www/vhosts/somedomain/conf/ 中找到了一个由 Plesk 生成的 httpd.include 文件,其中包含一些 perl 处理器代码:
SetHandler perl-script PerlHandler ModPerl::Registry Options ExecCGI allow from all PerlSendHeader On
如果我通过 Plesk 去掉 perl 支持,也就是删除上面的代码块,那么我就不会再遇到错误。
显然,答案是禁用 perl,因为我不需要它,但是必须有一种方法可以修复此错误而无需这样做吧?