簡體   English   中英

如何在Yaws / Erlang中重寫URL

[英]How to rewrite URL in Yaws/Erlang

如何在不包含擴展名的情況下訪問yaws文件? 說,

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

我從yaws文檔/ appmod中找不到任何特定的文檔。

我認為這個問題最終將得到澄清!

您可以在Yaws PDF文檔的“ 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{}繼續分派請求#arg{}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM