Индекс как сервлет, остальные как статический контент
Я поднял 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");
После перезапуска 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
Я снова увидел сервлет. Таким образом, это не то решение, которое я ищу.
Опять хочу /
ударить по конкретному сервлету моего назначения, и чтобы все другие запросы не были выполнены этим одним правилом.
Спасибо,
1 ответ
Похоже, что подобное решение представлено в решении переписывания обработчиков G-WAN.
Используя это, я получил следующий код, который позволяет генерировать не только индекс, но и любые дополнительные строки запроса.
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, не блокируя остальную часть каталога, можно упростить с помощью макроса.