2012-08-10 72 views
28

我已閱讀幾乎所有可能的問題,並找不到任何可以解決我的問題的東西。 這是erorr登錄我收到: 有FollowSymLinks或SymLinksIfOwnerMatch熄滅這意味着RewriteRule指令禁止:/var/www/vhosts/site.com/httpdocs/cgi-bin/cron.pl選項FollowSymLinks或SymLinksIfOwnerMatch關閉

當訪問網站我得到403禁止「您無權訪問此文檔。」錯誤。

我修改我的.htaccess有這樣的:

Options +FollowSymLinks +SymLinksIfOwnerMatch 
AddDefaultCharset utf-8 
RewriteEngine on 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1] 
. 
. 
. 

我還添加了這httpd.conf中:

AddHandler cgi-script .cgi 
AddHandler cgi-script .pl 

<Directory /> 
Options -ExecCGI FollowSymLinks -Includes -IncludesNOEXEC -Indexes -MultiViews -SymLinksIfOwnerMatch 
AllowOverride All 
</Directory> 

真的怎麼辦下?

回答

11

注意這從apache docs for option

與+混音選項或 - 與那些沒有無效的語法, 並通過與 中止的語法檢查服務器啓動過程中被拒絕。

您在區塊中混合+/-和無選項(即參見FollowSymLinks)。

我今天在我的一個網站上發現了同樣的確切錯誤,我忘記了在選項前面添加「+」。我添加了「+」,它現在可以工作。

16

請注意,您的Web應用程序所在的目錄不包含在限制爲FollowSymLinks的另一個父目錄中。

解決方法是在頂層目錄(父目錄)中啓用FollowSymLinks或將您的Web應用程序移動到父目錄中「no FollowSymLinks」範圍之外的目錄。

例如,未來apache配置可能是一個問題,當然,它再現了問題:

<VirtualHost *:80> 
     ... 
     <Directory "D:/"> 
     Options Indexes 
     </Directory> 

     <Directory "D:/mywebfolder/"> 
     Options Indexes FollowSymLinks 
     </Directory> 
     ... 
    </VirtualHost> 

爲了避免這個問題:

<VirtualHost *:80> 
     ... 
     <Directory "D:/"> 
     Options Indexes FollowSymLinks 
     </Directory> 
     ... 
     ... 
    </VirtualHost> 

或移動您的D:/mywebfolder/到另一個單位例如E:/mywebfolder

1

把這個在你的根目錄下:

<Directory /> 
    #AllowOverride none 
    Require all denied 
    Options FollowSymLinks 
    Options SymLinksIfOwnerMatch 
</Directory> 

<Directory "root"> 
    Options FollowSymLinks 
    Options SymLinksIfOwnerMatch 
</Directory> 
+1

那應該是什麼文件名? – brentonstrine 2014-03-24 21:32:02

4

我最近有一個類似的錯誤,我固定它適合我。這個問題的一個可能的根本原因是,在錯誤文本本身中提到的目標文件夾(進行重寫的目標文件夾)沒有設置FollowSymLinks選項。從你的錯誤信息中,我看到這個文件夾是:/var/www/vhosts/site.com/httpdocs/cgi-bin/

在這種情況下,你可以在中使用。該特定文件夾中的htaccess:

Options +FollowSymLinks 

此設置上面會只是添加了FollowSymLinks對現有選項頂這個文件夾(這是所代表的東西+它只會增加該選項)。

例子:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    Options +FollowSymLinks 
</IfModule> 

這是在那裏我有錯誤的情況下,這是我怎麼固定它。在我的情況下,有一個不同的文件夾(不是cgi-bin)和不同的文件(一個PHP文件)。

警告:

  • 確保你真的想重寫URL指向的cgi-bin。如果你在這裏有重要的腳本,它可能會影響安全性,你可能不希望重寫發生。如果你在cgi-bin中設置了這個設置,人們可以在cgi-bin中查看腳本的輸出,除非你知道你在做什麼,否則這可能不好。

注:

  • 請注意,根據本地設置/瀏覽器設置,更新的.htaccess可能無法提供在瀏覽器中的效果瞬間,當你輸入URL,並可以顯示馬上得到相同的結果,而不考慮你對.htaccess的修改。在這種情況下,您可能需要重新啓動瀏覽器才能看到修改的效果。對於初學者來說,在嘗試修復時這可能非常耗時,並且爲什麼它不起作用會讓人困惑。另外,如果你修改httpd.conf(而不是我的文章中的情況),你必須重新啓動Web服務器。

  • 在調查的修復我的錯誤,我在網上發現這個錯誤也hapened對某些人來說,對於Plesk安裝完成,在這種情況下,解決特定的問題是編輯/ etc/apache2的/ MODS -enabled/dir.conf,並更新DirectoryIndex,並在index.pl之前移動index.php。

5

我有這個問題,最後發現是因爲我已經PHP和快速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> 

希望這可以幫助別人,節省我浪費的時間。

+0

這爲我解決了它,10倍! – w00t 2016-07-26 15:52:47

+0

拯救生命!謝謝!! – jiraiya 2017-05-04 12:05:56

+0

@jiraiya我已經搬到了Caddy現在 - 看看https://caddyserver.com/ – 2017-05-04 14:01:55

相關問題