2016-07-29 11 views
1

Wie kann ich auf die yars-Datei zugreifen, ohne die Erweiterung einzubeziehen? Sprich:Wie URL in Yaws/Erlang umschreiben

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

ich keine spezifische Dokumentation für diese von yaws Dokumentation/appmod finden konnten.

Ich denke, die Frage ist letztlich geklärt!

Antwort

4

Ein Beispiel dafür finden Sie im Abschnitt "Arg Rewrite" (7.1.2) von the Yaws PDF documentation. Setzen Sie die Variable arg_rewrite_mod in der Server-Konfiguration auf den Namen eines Erlang-Modul unterstützt Umschreiben:

arg_rewrite_mod = my_rewriter 

Zur Unterstützung Umschreiben der my_rewriter Modul muss definieren und exportieren Sie eine arg_rewrite/1 Funktion, einen #arg{} Rekord als Argument nehmen:

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

Der Code enthält yaws_api.hrl zum Abrufen der #arg{} Datensatzdefinition.

Die Funktion rewrite_pages/0 gibt eine Liste der Seiten zurück, die neu geschrieben werden müssen, um ".yaws" Suffixe einzuschließen; In diesem Beispiel ist es nur die Seite, die Sie in Ihrer Frage erwähnen. Wenn wir in arg_rewrite/1 die angeforderte Seite in dieser Liste finden, fügen wir ".yaws" an den Seitennamen an und fügen sie in eine neue #arg{} ein, die wir an Yaws zurücksenden, die dann die Anfrage basierend auf der neuen #arg{} weiterschickt.