gpt4 book ai didi

python - Web.py Apache mod_wsgi url 重写

转载 作者:行者123 更新时间:2023-11-28 17:44:01 24 4
gpt4 key购买 nike

我相信我已经使用 mod_wsgi 和重写引擎正确设置了 Apache。我正在使用 web.py 来提供内容。测试“Hello World”应用程序有效,但输出包括文件根目录。看起来像这样:

Hello, /var/www/example.com/application/!

我已经包含了配置和代码。

这是 apache 配置:

<VirtualHost *:80>
ServerAdmin admin@example.com
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()

更新:在试用 Rewrite 之后,我发现问题出在 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 admin@example.com
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”了:

enter image description here

关于python - Web.py Apache mod_wsgi url 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20653402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com