use*_*251 29 apache .htaccess rewrite httpd.conf
我已经阅读了几乎所有可能的问题,但找不到任何能解决我问题的方法.这是我得到的erorr日志:选项FollowSymLinks或SymLinksIfOwnerMatch关闭意味着禁止使用RewriteRule指令:/var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl
访问网站时,我收到403 Forbidden"您无权访问此文档." 错误.
我已修改我的.htaccess了:
Options +FollowSymLinks +SymLinksIfOwnerMatch
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]
.
.
.
Run Code Online (Sandbox Code Playgroud)
我还将此添加到httpd.conf:
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
<Directory />
Options -ExecCGI FollowSymLinks -Includes -IncludesNOEXEC -Indexes -MultiViews -SymLinksIfOwnerMatch
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
真的我接下来可以做什么?
Hok*_*sai 18
请注意,Web应用程序所在的目录不包含在另一个受限制的父目录中FollowSymLinks.
解决方案是FollowSymLinks在顶层目录(父目录)中启用,或将Web应用程序移动到FollowSymLinks父目录中"no " 范围之外的目录.
例如,下一个apache配置可能是一个问题,肯定会重现问题:
<VirtualHost *:80>
...
<Directory "D:/">
Options Indexes
</Directory>
<Directory "D:/mywebfolder/">
Options Indexes FollowSymLinks
</Directory>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
为了避免这个问题:
<VirtualHost *:80>
...
<Directory "D:/">
Options Indexes FollowSymLinks
</Directory>
...
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
或者转移D:/mywebfolder/到另一个单位,例如E:/mywebfolder
use*_*345 11
请注意apache文档中的选项:
使用+或 - 将选项与没有选项混合使用的语法无效,并且在服务器启动期间通过语法检查中止将被拒绝.
您正在使用+/-混合选项而不在您的块中(即参见FollowSymLinks).
我今天在我的一个网站上出现了同样的错误,我忘记在选项前添加"+".我添加了"+",它现在有效.
Tob*_*len 10
我有这个问题,最后发现因为我用php配置了fast-cgi而不是apache模块,我不得不更新\conf\extra\httpd-fcgid.conf然后添加FollowSymLinks到这个块
<Files ~ "\.php$">
Options ExecCGI FollowSymLinks
AddHandler fcgid-script .php
FcgidWrapper "d:/php/php-cgi.exe" .php
</Files>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助某人并节省我浪费的时间.
我最近有类似的错误,我为我修复了它.此问题的一个可能根本原因是错误文本本身中提到的目标文件夹(对其进行重写)没有设置FollowSymLinks选项.从您的错误消息中,我看到此文件夹是:/var/www/vhosts/site.com/httpdocs/cgi-bin/
在这种情况下,您可以使用该特定文件夹的.htaccess:
Options +FollowSymLinks
Run Code Online (Sandbox Code Playgroud)
上面的设置只会在现有选项的基础上添加此文件夹的FollowSymLinks(这就是+代表的位置.它只添加此选项).
例:
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这就是我遇到错误的情况,这就是我修复它的方法.在我的例子中,有一个不同的文件夹(不是cgi-bin)和不同的文件(PHP文件).
警告:
笔记:
请注意,根据本地设置/浏览器设置,当您输入URL时,更新.htaccess可能无法立即在浏览器中提供效果,并且可能会立即显示相同的结果,而不考虑您对.htaccess的修改.在这种情况下,您可能必须重新启动浏览器才能看到修改的效果.对于初学者来说,这在尝试修复时非常耗时,并且会混淆为什么它不起作用.此外,如果您修改httpd.conf(不是我的帖子中的情况),您必须重新启动Web服务器.
在调查修复我的错误的同时,我在网上注意到这个错误对于某些人来说也是一种恶意,对于Plesk安装,在这种情况下,该特定问题的解决方案是编辑/ etc/apache2/mods-enabled/dir. conf,并更新DirectoryIndex,并在index.pl之前移动index.php.