Я считаю, что я правильно настроил Apache с mod_wsgi и Rewrite Engine. Я использую web.py для обслуживания содержимого. Тест «Hello World» работает, но выход включает в себя корень файла. выглядит так:Web.py Apache mod_wsgi url rewrite
Hello, /var/www/example.com/application/!
Я включил конфигурации и код.
Вот апач конфигурации:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName foodcost.mynetwork.inside
ServerAlias foodcost.mynetwork.inside
DocumentRoot /var/www/example.com/public_html/
ErrorLog /var/www/example.com/logs/error.log
CustomLog /var/www/example.com/logs/access.log combined
WSGIScriptAlias//var/www/example.com/application/
Alias /static /var/www/example.com/public_html
<Directory /var/www/example.com/application>
SetHandler wsgi-script
Options ExecCGI
Options +FollowSymLinks
</Directory>
AddType text/html .py
<Location />
RewriteEngine on
RewriteBase/
RewriteCond %{REQUEST_URI} !^/static
RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
RewriteRule ^(.*)$ code.py/$1 [PT]
</Location>
</VirtualHost>
Python код:
import web
urls = (
'(.*)', 'hello'
)
app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()
class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
if __name__ == "__main__":
app.run()
Update: После игры вокруг с Rewrite я пришел, чтобы обнаружить, что проблема с RewriteRule ^(.*)$ code.py/$1 [PT]
. Параметр $1
(параметр) передает корень того, где работает скрипт python, плюс все остальное URL-адрес от корневого URL-адреса.
Так пример этого был бы URL:
http://{rootURL}/tom
Выход:.
Hello, /var/www/example.com/application/tom!
Я не могу понять, почему расположение каталога сценария питона передается в
Почему, по вашему мнению, вам нужно переписать URL-адреса? 'WSGIScriptAlias' должен обслуживать ваше приложение напрямую, без необходимости переписывания. –
Я использую этот учебник, чтобы настроить его. http://www.codero.com/knowledge-base/questions/316/How+to+deploy+web.py+applications Я хотел бы, чтобы URL-адрес не отображал code.py. – Jeremy
@Jeremy: В это место входит WSGIScriptAlias; он получает корневой URL-адрес и использует ваш WSGI-скрипт для работы с этим URL-адресом. 'code.py' никогда не будет частью URL в такой конфигурации. –