您无权访问此服务器上的 /index.py

您无权访问此服务器上的 /index.py

我正在用 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 OnDirectoryIndex只需设置在访问包含目录(即)时返回的文件/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

将您的 更改AddHandlerAddHandler mod_python .py

我宁愿在那里编辑/etc/apache2/mods-available/dir.conf和添加index.py而不是DirectoryIndex在你的中使用.htaccess

将您的更改index.py为:

#!/usr/bin/env python


def index(req):
    return "test"

相关内容