2013-04-18 26 views
0

我刚刚拿起G-WAN,并试图找出如何使索引使用特定的servlet,同时还有静态内容可用。作为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。所以,这似乎不是我正在寻找的解决方案。

再说一遍,我只是想让/打到我指定的特定小服务程序,并且所有其他请求都不受此规则影响。

谢谢,

回答

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没有问题,同时仍然能够访问像100.html文件没有得到一个servlet 404

它看起来像任何其他类似的绑定到一个URL,而使用宏可以使阻止其他目录变得更容易。