Web.py Apache mod_wsgi网址重写

杰里米

我相信我已使用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脚本的目录位置。

Velimir Mlaker

遵循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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mod_wsgi 调用 fopen() 失败,因为“path/wsgi.py apache ubuntu”

来自分类Dev

在Ubuntu 16.04上使用Apache mod_wsgi部署Bottle.py应用

来自分类Dev

CherryPy:创建在apache2(mod_wsgi)后面运行的Web服务

来自分类Dev

Apache mod_wsgi错误:禁止

来自分类Dev

Django,Apache和mod_wsgi

来自分类Dev

Django + mod_wsgi + Apache = 403禁止

来自分类Dev

Apache,Django和mod_wsgi

来自分类Dev

Python BaseHTTPServer与Apache和mod_wsgi

来自分类Dev

Apache mod_wsgi和Qt

来自分类Dev

Apache 和 mod_wsgi 的几个进程

来自分类Dev

Apache、Django 和 mod_wsgi

来自分类Dev

Apache2的`web.py`会话

来自分类Dev

sqlalchemy apache mod_wsgi与金字塔崩溃

来自分类Dev

让Flask使用Python3(Apache / mod_wsgi)

来自分类Dev

What is the entry point that Apache mod_wsgi on OpenShift Online is looking for?

来自分类Dev

Apache2 mod_wsgi 403禁止错误

来自分类Dev

Django在mod_wsgi(Linux)上的apache上-403 Forbidden

来自分类Dev

使用mod_wsgi在Apache背后设置pico

来自分类Dev

无法使用Apache + mod_wsgi远程访问Django应用

来自分类Dev

使用Apache mod_wsgi进行HTTP流

来自分类Dev

使用mod_wsgi用apache设置Django

来自分类Dev

为mod_wsgi安装apache2-dev

来自分类Dev

使用mod_wsgi CSRF验证的Apache上的Django失败

来自分类Dev

部署烧瓶和apache2 mod_wsgi的问题

来自分类Dev

Apache 无法使用 mod_wsgi 作为 Windows 服务启动

来自分类Dev

使用 mod_wsgi 和 SSL 的 Apache 石墨子域

来自分类Dev

Apache mod_wsgi python 变量持久化

来自分类Dev

带有 mod_wsgi 模块的 Django apache 配置

来自分类Dev

使用 mod_wsgi 在 Apache 上部署 Django