Я настраиваю простую тестовую страницу на 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.
Помимо этого, я думаю, что предложение Маркдрейтона правильное.
Я просто попробовал это на своем сервере, и он работал нормально.
Также попробуйте добавить эти файлы в свой 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"