gpt4 book ai didi

erlang - 如何在 Yaws/Erlang 中重写 URL

转载 作者:行者123 更新时间:2023-12-02 06:37:37 25 4
gpt4 key购买 nike

如何访问雅司病文件而不包含其扩展名?说,

www.domain.com/listen.yaws => www.domain.com/listen

我在 yaws Documentation/appmod 中找不到任何具体的文档。

我认为这个问题最终得到了澄清!

最佳答案

您可以在 the Yaws PDF documentation 的“Arg Rewrite”部分 (7.1.2) 中找到如何实现这一目标的示例。 。将服务器配置中的变量 arg_rewrite_mod 设置为支持重写的 Erlang 模块的名称:

arg_rewrite_mod = my_rewriter

为了支持重写,my_rewriter 模块必须定义并导出 arg_rewrite/1 函数,并将 #arg{} 记录作为其函数论据:

-module(my_rewriter).
-export([arg_rewrite/1]).

-include_lib("yaws/include/yaws_api.hrl").

rewrite_pages() ->
["/listen"].

arg_rewrite(Arg) ->
Req = Arg#arg.req,
{abs_path, Path} = Req#http_request.path,
case lists:member(Path, rewrite_pages()) of
true ->
Arg#arg{req = Req#http_request{path = {abs_path, Path++".yaws"}}};
false ->
Arg
end.

代码包含 yaws_api.hrl 以获取 #arg{} 记录定义。

rewrite_pages/0 函数返回必须重写以包含 ".yaws" 后缀的页面列表;在此示例中,这只是您在问题中提到的 /listen 页面。如果在 arg_rewrite/1 中我们在该列表中找到请求的页面,我们会将 ".yaws" 附加到页面名称并将其包含在新的 #arg{ } 我们返回到 Yaws,然后 Yaws 继续根据新的 #arg{} 分派(dispatch)请求。

关于erlang - 如何在 Yaws/Erlang 中重写 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38666945/

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