我和我的朋友在 Debian 10 上啟動了一個伺服器並運行 Apache2。我寫了一個非常簡單的網站和一個 python 腳本只是為了測試 cgi 腳本。因此,基本上在用戶完成表單並按“提交”後,它應該會顯示“Hello world”,但我收到 404 錯誤,指出“在此伺服器上找不到請求的 URL”。表單位於 /var/www/html/form/index.html 中,cgi 腳本位於 /var/www/html/cgi-bin/hello.py 中
Python腳本:
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
HTML 程式碼:
<!DOCTYPE html>
<html lang=en dir="ltr">
<head>
<meta charset="utf-8">
</head>
<body>
<dir class="main">
<form action="../cgi-bin/hello.py" method="get">
<fieldset>
<label for="name">Name</label>
<input type="text" name="name">
<label for="mail">E-Mail</label>
<input type="email" name="email">
<label type="phone" for="phone">Phone number</label>
<input type="text" name="phone">
<input id="submit" class="inputs" type="submit" name="send" value="Wyślij" />
</fieldset>
</form>
</dir>
</body>
</html>
Apache2目錄設定:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html/cgi-bin">
AllowOvveride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/html/cgi-bin">
Options All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>