存在的文件上出現 404 錯誤?
一個腳本向我的 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
影響您的請求。