路由到具有领先期间的目录?

问题描述 投票:0回答:2

尝试使用web2py启用letsencrypt。作为其中的一部分,我可能需要为像www.example.com/.well-known/acme-challenge/<some long string>这样的网址创建路线

当我测试这个时,我注意到以下路由有效:

('/\.well-known/acme-challenge/test.html',
 '/some_app/static/well-known/acme-challenge/test.html'),

虽然这条几乎相同的路线不是:

('/\.well-known/acme-challenge/test.html',
 '/some_app/static/.well-known/acme-challenge/test.html'),

这两条路线的唯一区别在于,在后者中,在元组的第二个元素中,.well-known有一个领先时期,而前一条路线有well-known没有一个时期。

注意我确实尝试像\.well-known那样逃避时期,但它也不起作用。

为什么具有领先期限的路线不起作用?我该如何解决?

url-routing web2py lets-encrypt
2个回答
1
投票

即使它是静态URL,紧接在/static/之后的路径段也被解释为控制器函数,因此期望它是有效的Python标识符(用于匹配路径的该部分的正则表达式是\w+)。

请注意,您可以考虑将Web服务器配置为直接返回响应(例如,配置Nginx以执行此操作很容易),而不是让web2py提供letsencrypt响应。


0
投票

我没有遇到直接解决期限问题的问题(正如Anthony web2py所提到的那样,需要一个有效的python标识符)

但是,为了解决使用Let的加密的具体问题,我确实按照Anthony的建议在网络服务器中处理它。我正在使用Apache,在我的httpd.conf中我添加了:

LoadModule alias_module modules/mod_alias.so

Alias "/.well-known/" "/var/www/html/somedirectory/.well-known/"

注意Alias将自动映射url路径之后的任何内容。上面的Alias示例:

example.com/.well-known/something/hello

将映射到

/var/www/html/somedirectory/.well-known/something/hello

© www.soinside.com 2019 - 2024. All rights reserved.