Назад | Перейти на главную страницу

У вас нет разрешения на доступ к /index.py на этом сервере.

Я настраиваю простую тестовую страницу на Python. У меня всего два файла: .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 не обработчик, это тип MIME.

Тебе наверное понадобится ExecCGI на (см. документы). Обычно это включено для /cgi-bin/ но если вашего файла там нет, вам понадобится что-то подобное в вашем .htaccess

Options +ExecCGI
AddHandler cgi-script .py

Это зависит от вашего сервера, позволяющего .htaccess файлы. Увидеть AllowOverride документация.

Тебе не нужно RewriteEngine On и DirectoryIndex просто устанавливает файл, возвращаемый, когда вы попадаете в содержащий каталог (т. е. /python/) без имени файла.

Это решение просто позволяет выполнять .py скрипты с использованием mod_cgi. Другие решения, которые предложили mod_python также будет работать, но это более сложно и включает интерпретатор Python в процессы Apache. Это не требуется для прямого выполнения с использованием системного интерпретатора Python.

Я заметил, что вы не упомянули, где в вашей файловой системе вы все это делаете. Если для папки, над которой вы работаете, не установлены разрешения в конфигурации Apache, вы получите 403 независимо от того, какие разрешения Unix установлены в файловой системе. Apache не будет обслуживать файлы, физически хранящиеся в местах, которые не были указаны в конфигурации.

Это, возможно, маловероятно, поскольку вы, вероятно, работаете в своем обычном веб-каталоге, но тем не менее его стоит протестировать. Поместите простой текстовый файл в ту же папку и попробуйте просмотреть его, если вы его видите, то это не проблема, если вы все равно получаете 403, посмотрите конфигурацию Apache.

Помимо этого, я думаю, что предложение Маркдрейтона правильное.

Я просто попробовал это на своем сервере, и он работал нормально.

  • Не казалось необходимым CHMOD htaccess.
  • Вы пробовали зайти одновременно на yoursite.com/folder и yoursite.com/folder/index.py? Оба работали для меня, но, может быть, эта строка DirectoryIndex не работает для вас? Если бы я удалил эту строку, работал бы только /index.py.

Также попробуйте добавить эти файлы в свой htaccess (при необходимости заменив):

AddHandler mod_python .py
PythonHandler index
PythonDebug On 

В другой моей системе эти строки были необходимы для работы обработки Python (с использованием mod_python).

Вы убедились, что каталог доступен для просмотра? У меня были проблемы с разрешениями, когда каталоги мешали файлам, которые они содержали в прошлом.

Также - работает ли .htaccess с любыми другими скриптами, такими как perl или bash?

Обычно в файлах конфигурации Apache для Python есть обработчик по умолчанию (я считаю, что он передан в mod-python). Если удалить .htaccess, будет ли сценарий работать с обработчиком по умолчанию?

Измените свой 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"