2013-04-18 2 views
0

Я взял G-WAN только некоторое время назад, и я пытаюсь выяснить, как заставить индекс использовать определенный сервлет, а также иметь статический контент.Индекс как сервлет, остальное как статическое содержимое

Я переехал 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"); 

После перезапуска Гван, я увидел 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, я снова увидел сервлет. Таким образом, это не похоже на решение, которое я ищу.

Опять же, я просто хочу, чтобы / попал в определенный сервлет моего обозначения и для всех других запросов, которые не должны выполняться этим одним правилом.

Спасибо,

ответ

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 без получения сервлета 404.

Похоже, что любых других подобных привязки к URL времени не блокируя остальную часть каталога, можно сделать проще с помощью макроса.

 Смежные вопросы

  • Нет связанных вопросов^_^