索引作为servlet,作为静态内容休息

时间:2013-04-18 02:32:50

标签: g-wan

我前一段时间拿起了G-WAN,我正试图弄清楚如何让索引使用特定的servlet,同时还有静态内容。

我已将index.html移至index_old.html,因此我不会有任何冲突。

我将以下内容放入处理程序中。

xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/", "/?hello");

重新启动gwan后,我看到Hello, ANSI C!就像我想要的那样。

但是,我注意到所有其他内容都不再加载,即使404页面也不同!

所以,我有一个想法,这似乎是在进行字符串替换,而不是精确匹配。

xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/", "/?");

现在,当点击/时,我看到了404,/hello,我再次看到了servlet。所以,这似乎不是我要找的解决方案。

同样,我只希望/命中我指定的特定servlet,以及所有其他请求不受此规则影响。

谢谢,

1 个答案:

答案 0 :(得分:0)

似乎提出了类似的解决方案 G-WAN handler rewriting solution

使用它,我派生了以下代码,不仅允许生成索引,还允许生成任何其他查询字符串。

char *szRequest = (char*)get_env(argv, REQUEST);
if(strncmp(szRequest, "GET / ", 6) == 0){
        xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
        xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/", "/!hello");
}else if(strncmp(szRequest, "GET /?", 6) == 0){
        xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
        xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/?", "/!hello&");
}

如上所述,我不得不转移到!以避免冲突。这意味着我必须在init()函数中添加以下内容。

u8 *query_char = (u8*)get_env(argv, QUERY_CHAR);
*query_char = '!'; 

我可以毫无问题地访问//?blah,同时仍然可以在不获取servlet 404的情况下访问100.html之类的文件。

看起来像任何其他类似的绑定到URL而不阻止目录的其余部分可以通过宏更容易。