我相信我已使用mod_wsgi和Rewrite Engine正确设置了Apache。我正在使用web.py提供内容。测试“ Hello World”应用程序可以运行,但是输出包含文件根。看起来像这样:
Hello, /var/www/example.com/application/!
我已经包含了配置和代码。
这是apache配置:
<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()
更新:在玩过重写之后,我发现问题出在哪里RewriteRule ^(.*)$ code.py/$1 [PT]
。在$1
(参数)通过在python脚本运行加任何URL的其余部分是从根URL的根。
因此,URL的示例如下:
http://{rootURL}/tom
输出:
Hello, /var/www/example.com/application/tom!
我不知道为什么要传入python脚本的目录位置。
遵循http://webpy.org/cookbook/mod_wsgi-apache上的教程之后,我相信您真的不需要重写URL。您的apache配置如下:
<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/code.py/
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
</VirtualHost>
(除其他更改外,请注意已添加code.py/
到WSGIScriptAlias
指令中。)
文件/var/www/example.com/application/code.py
是:
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()
(请注意urls
,一开始在元组中添加了斜杠。
这样就不会显示“ code.py”:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句