如何在不包含擴展名的情況下訪問yaws文件?再說了,如何在Yaws/Erlang中重寫URL
www.domain.com/listen.yaws =>www.domain.com/listen
我無法找到yaws
文檔/ appmod這方面的任何具體文件。
我認爲這個問題最終得到了澄清!
如何在不包含擴展名的情況下訪問yaws文件?再說了,如何在Yaws/Erlang中重寫URL
www.domain.com/listen.yaws =>www.domain.com/listen
我無法找到yaws
文檔/ 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{}
繼續分派請求。