我正在用 Python 设置一个简单的测试页面。我只有两个文件:.htaccess 和 index.py。(两者的权限都设置为 755)当我尝试查看页面时,我收到 403 Forbidden 错误 - 我该如何修复此问题?
.htaccess 文件:
RewriteEngine On
AddHandler application/x-httpd-cgi .py
DirectoryIndex index.py
索引.py:
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "test"
答案1
你检查过错误日志吗?这是最先要查看的地方。
我认为你的AddHandler
说法不正确。文档说它的用法如下:
语法:AddHandler 处理程序名称 扩展名 [扩展名] ...
application/x-httpd-cgi
不是一个处理程序,而是一个 MIME 类型。
您可能需要ExecCGI
(参见文档)。这通常是启用的,/cgi-bin/
但如果你的文件不在那里,你需要在你的.htaccess
Options +ExecCGI
AddHandler cgi-script .py
这取决于您的服务器是否允许.htaccess
文件。请参阅AllowOverride
文档。
您不需要RewriteEngine On
,DirectoryIndex
只需设置在访问包含目录(即)时返回的文件/python/
而没有文件名。
此解决方案仅允许.py
使用 执行脚本mod_cgi
。建议的其他解决方案mod_python
也有效,但更复杂,并在 Apache 进程中嵌入 Python 解释器。使用系统 Python 解释器直接执行时不需要这样做。
答案2
您是否确定目录是可见的?我以前遇到过目录权限问题,导致目录所含文件受到干扰。
另外 - .htaccess 是否可以与任何其他脚本(如 perl 或 bash)一起使用?
通常,Apache 配置文件中有一个用于 Python 的默认处理程序(我相信是交给 mod-python 的)。如果删除 .htaccess,脚本是否使用默认处理程序运行?
答案3
我刚刚在我的服务器上尝试过这个,并且运行良好。
- 似乎没有必要对 htaccess 进行 CHMOD 。
- 您是否尝试过同时访问“yoursite.com/folder”和“yoursite.com/folder/index.py”?对我来说,两者都有效,但也许 DirectoryIndex 行对您来说不起作用?如果我删除该行,则只有 /index.py 有效。
还可以尝试将这些文件添加到您的 htaccess(根据需要进行替换):
AddHandler mod_python .py
PythonHandler index
PythonDebug On
在我的另一个系统上,这些行对于使 python 处理正常工作(使用 mod_python)是必需的。
答案4
将您的 更改AddHandler
为AddHandler mod_python .py
。
我宁愿在那里编辑/etc/apache2/mods-available/dir.conf
和添加index.py
而不是DirectoryIndex
在你的中使用.htaccess
。
将您的更改index.py
为:
#!/usr/bin/env python
def index(req):
return "test"