[英]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.