Apache-2.2

存在的文件上出現 404 錯誤?

  • August 6, 2012

一個腳本向我的 URL 發出 GET 請求,如下所示:

http://mydomain.com/cgi-bin/uu_ini_status_audios.pl?tmp_sid=b742be1d131c4d32237a9f1fcdca659e&rnd_id=0.2363453360320319

但是,我立即返回了 404:

The requested URL /cgi-bin/uu_ini_status_audios.pl was not found on this server.

但是該腳本存在於我的伺服器上,我可以看到該文件!它具有正確的權限(我給了它一個 777 確定)。它也歸我的 apache 使用者所有,並且在 apache 組中。

我錯過了什麼??

感謝您對此的任何幫助!

更新

我認為這將是一個 htaccess(重寫),但我認為它不再是了。我嘗試將 index.php 文件放在那裡並嘗試通過我的 URL 訪問它,但我什至不能這樣做!我試過這個:

http://mydoamin.com/cgi-bin/index.php- 同樣的 404 錯誤!我在我的錯誤日誌中得到了這個:

[Tue Sep 14 14:42:49 2010] [error] [client xx.xxx.xx.xxx] script not found or unable to stat: /var/www/vhosts/mydomain.com/cgi-bin

訪問日誌文件:

xx.xxx.xx.xxx - -

[Math Processing Error]$$ 14/Sep/2010:14:48:25 +0200 $$“GET /cgi-bin/index.php HTTP/1.1” 404 475 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 (.NET CLR 3.5.30729)”

更新 2

我的 htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/ - [L]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]
RewriteRule ^search/(.*)/(.*)/(.*)/(.*) /search.php?searchfor=$1&sortby=$2&page=$3&searchterm=$4
RewriteRule ^confirmemail/(.*) /confirmemail.php?code=$1
RewriteRule ^resetpassword/(.*) /resetpassword.php?code=$1
RewriteRule ^resendconfirmation/(.*) /resendconfirmation.php?userid=$1
RewriteRule ^categories/ /categories.php
RewriteRule ^([-_~*a-zA-Z0-9]+)(\/)?$ /memberprofile.php?username=$1
RewriteRule ^browse/audios/(.*)/(.*)/(.*)/(.*) /audios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^browse/categories/audios/(.*)/(.*)/(.*)/(.*) /categoryaudios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^audios/(.*)/(.*) /playaudio.php?audioid=$1&title=$2
RewriteRule ^download/audio/(.*)/(.*) /downloadaudio.php?AUDIOID=$1&title=$2
RewriteRule ^members/audios/(.*)/(.*) /memberaudios.php?pid=$1&username=$2
RewriteRule ^syndicate/audios/(.*)/(.*) /syndicateaudios.php?filter=$1&title=$2
</IfModule>

更新 3

[root@smydomain ~]# ls -la /var/www/vhosts/mydoamin.com/httpdocs/cgi-bin/
total 60
drwxr-xr-x  3 apache root     4096 Sep 14 14:37 .
drwxr-x--- 20 som    psaserv  4096 Sep 14 14:40 ..
drwxr-xr-x  2 apache root     4096 Sep  7 03:01 configs
-rwxrwxrwx  1 apache root        4 Sep 14 14:37 index.php
-rwxrwxrwx  1 apache apache   6520 Sep  7 03:01 uu_ini_status_audios.pl
-rwxr-xr-x  1 apache root     3215 Sep  7 03:01 uu_lib_audios.pl
-rwxr-xr-x  1 apache root    30249 Sep  7 03:01 uu_upload_audios.pl

SuExec 給我造成了問題。

禁用這意味著我在 cgi-bin 中的腳本可以執行。但是你必須確保目錄和腳本具有相同的權限,即0755。另外,目錄和腳本必須屬於同一個人。

這些是讓我的腳本工作的要求!我希望這可以幫助別人。

在您的文章中,您說找不到/var/www/vhosts/mydomain.com/cgi-bin;跑步時會發生什麼ls -la /var/www/vhosts/mydomain.com/cgi-bin

另外,我注意到它說它無法統計cgi-bin 文件夾;您的 mod_rewrite 規則是否錯誤地將所有請求轉發/var/www/vhosts/mydomain.com/cgi-bin/index.php/var/www/vhosts/mydomain.com/cgi-bin

如果您了解更多資訊,請更新您的問題。

編輯:通過設置以下啟用 mod_write 日誌:

RewriteLog /path/to/where/logs/live
RewriteLogLevel 5

這應該為您提供足夠的數據來查看是否mod_rewrite影響您的請求。

引用自:https://serverfault.com/questions/180952