2016-07-29 13 views
1

yawsファイルに拡張子を含めずにアクセスするにはどうすればよいですか? 、Yaws/ErlangでURLを書き換える方法

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

を言って、私はyawsドキュメント/ appmodから、このための具体的な資料を見つけることができませんでした。

私は質問が最終的に明らかになると思います!

答えて

4

「Arg Rewrite」セクション(7.1.2)のthe Yaws PDF documentationにこれを実現する方法の例があります。書き換えをサポートするために

arg_rewrite_mod = my_rewriter 

my_rewriterモジュールは、その引数として#arg{}記録を取って、arg_rewrite/1関数を定義し、エクスポートする必要があります:書き換え支えるErlangのモジュールの名前にサーバー構成内の変数arg_rewrite_modを設定

-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. 

#arg{}レコード定義を取得するコードには、yaws_api.hrlが含まれています。

rewrite_pages/0関数は、".yaws"の接尾辞を含むように書き換えなければならないページのリストを返します。この例では、あなたの質問に言及したのはちょうど/listenページです。 arg_rewrite/1でリクエストされたページが見つかった場合は、ページ名に".yaws"を追加し、それを新しい#arg{}に含めてYawsに返します。これにより、新しい#arg{}に基づいて要求が引き続き送信されます。

関連する問題