1

我有一些我想从我的网络服务器获得的 trac 项目,是否可以使用通配符自动将 url 映射到相关的 wsgi 文件?

我可以通过添加以下虚拟主机手动完成:

<VirtualHost *:80>
  DocumentRoot /var/www/trac.mydomain.com
  ServerName trac.mydomain.com
  WSGIScriptAlias /project1 /var/trac/project1/trac.wsgi
</VirtualHost>

但是,随着我打开更多 trac 项目,WSGIScriptAlias 行的数量会增加。是否可以使用通配符将传入的 url 自动映射到正确的 wsgi 文件?我想它看起来像这样:

<VirtualHost *:80>
  DocumentRoot /var/www/trac.mydomain.com
  ServerName trac.mydomain.com
  WSGIScriptAlias /<wildcard> /var/trac/<wildcard>/trac.wsgi
</VirtualHost>
4

1 回答 1

1

典型的!我在发布问题后进行的谷歌搜索带来了相关结果。解决方案是使用 WSGIScriptAliasMatch 和正则表达式。鉴于我上面的示例,配置看起来像这样:

<VirtualHost 95.211.154.197>
  DocumentRoot /var/www/trac.mydomain.com
  ServerName trac.mydomain.com
  WSGIScriptAliasMatch ^[^/]+ /var/trac/$1/trac.wsgi
<VirtualHost>

其中 ^/[^/]+ 匹配根 url 之后直到第一个 / 的所有字符。例如http://trac.mydomain.com/matched/notmatched/notmatchedeither.whatever将映射到 /var/trac/matched/trac.wsgi

于 2012-10-12T12:41:53.077 回答