2010-10-09 150 views
0

我有一個CGI腳本(pwyky),我稱之爲index.cgi,放在目錄wiki /中,並在訪問localhost/wiki時設置Apache來調用localhost/wiki/index.cgi。URL重寫問題

我在嘗試使用此應用程序時收到錯誤 - 它創建了一個鏈接爲「http:// localhost/wiki/@ edit/index」的頁面,但是當我單擊該鏈接時,Apace正試圖將「wiki/@ edit/index」作爲文件提供。我懷疑我需要讓Apache將/ @ edit/index傳遞給index.cgi。

特別是,通過index.cgi來查看它在REQUEST_URI環境變量中尋找諸如「@edit」之類的字符串。

任何想法如何解決這個問題?

回答

0

我發現這個問題,原來這是通過RewriteEngine完成的。 Pwyky將.htaccess文件放在目錄中,其中包含RewriteEngine的所有設置,但由於默認情況下AllowOverride在MacOS上爲「無」,因此它們被忽略。解決方法是將所有「AllowOverride」指令更改爲「All」

0

你需要顯示你的apache配置來說明某些事情,但似乎Apache實際上並沒有使用mod_cgi來爲index.cgi腳本提供服務。在你的配置中應該有'LoadModule mod_cgi'之類的東西。它應該是未註釋的(即它不應該在行的開頭有一個'#')。

如果你想測試這個,然後編寫一個'Hello World'cgi腳本並把它(臨時)放在index.cgi的位置,看看你能否運行它。讓我們知道結果。

+0

CGI腳本運行,但我得到「頁面未找到」錯誤,我認爲這是因爲腳本期望Apache解釋URL的「http:// localhost/wiki/@ edit/index「作爲對」wiki/index.cgi「腳本的調用 – 2010-10-10 03:02:43

+0

您如何知道cgi的運行?如果你得到'找不到網頁'的錯誤,那可能是由* apache *生成的,而不是cgi,在這種情況下,cgi永遠不會被調用(或者我需要更多的信息來解密)。另一種可能性是你需要一個更強大的表達式來告訴apache發送'/ wiki/*'到你的index.cgi(但這通常不是必需的)。 – jonesy 2010-10-10 03:09:14

+0

因爲當我到localhost/wiki時,它給了我wiki首頁(由wiki/index.cgi中的腳本生成) – 2010-10-10 14:56:25