我正在Python中设置一个简单的testing页面。 我只有两个文件:.htaccess和index.py。 (两者的权限设置为755)当我尝试查看页面时,出现403 Forbidden错误 – 我该如何解决这个问题?
的.htaccess:
RewriteEngine On AddHandler application/x-httpd-cgi .py DirectoryIndex index.py
index.py:
#!/usr/bin/python print "Content-type: text/html\n\n" print "test"
你有没有检查你的错误日志? 这是第一个看的地方。
我认为你的AddHandler是不正确的。 该文件说,它是这样使用的:
语法:AddHandler处理程序名称扩展名[扩展名] …
application/x-httpd-cgi不是一个处理程序,它是一个MIMEtypes。
您可能需要ExecCGI (请参阅文档 )。 这通常启用/cgi-bin/但如果你的文件不在那里,你需要在你的.htaccess这样的东西
Options +ExecCGI AddHandler cgi-script .py
这依赖于你的服务器允许.htaccess文件。 请参阅AllowOverride 文档 。
你不需要RewriteEngine On和DirectoryIndex只是设置当你打开包含没有文件名的目录(即/python/ )时返回的文件。
这个解决scheme只是使用mod_cgi执行.py脚本。 其他build议mod_python解决scheme也可以工作,但是这更复杂,并且在Apache进程中embedded了一个Python解释器。 这不需要使用系统Python解释器直接执行。
你确定目录是可见的吗? 我有权限问题与目录干涉他们包含在过去的文件。
此外,.htaccess是否可以与任何其他脚本一起使用,如perl或bash?
通常,在Python的Apacheconfiguration文件中有一个默认的处理程序(我相信是交给了mod-python)。 如果删除.htaccess,脚本是否使用默认处理程序运行?
我只是试图在我的服务器上,它运作良好。
也可以尝试添加这些文件到你的htaccess(根据需要更换):
AddHandler mod_python .py PythonHandler index PythonDebug On
在我的另一个系统上,这些行是获得python处理工作所必需的(使用mod_python)。
我注意到你没有提到你的文件系统上的所有这些。 如果您正在使用的文件夹在Apacheconfiguration中没有设置权限,则无论在文件系统上设置了什么Unix权限,您都将得到403。 Apache不会提供物理地存储在它没有被告知它可以在configuration中使用的位置的文件。
这可能是一个很长的时间,因为你可能正在正常的networking目录下工作,但值得一试的。 将一个纯文本文件粘贴在同一个文件夹中,并尝试查看它,如果你看到它,那么这不是问题,如果你仍然看到在Apacheconfiguration。
除此之外,我认为马克雷德顿的build议是现实的。
将您的AddHandler更改为AddHandler mod_python .py 。
我宁愿编辑/etc/apache2/mods-available/dir.conf并添加index.py ,而不是在你的.htaccess中使用DirectoryIndex 。
将您的index.py更改为:
#!/usr/bin/env python def index(req): return "test"