|
|
|
@ -77,22 +77,22 @@ struct redirect_data { |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static gboolean redirect_rule_parse(liServer *srv, GString *regex, GString *str, redirect_rule *rule) { |
|
|
|
|
gchar *regex_str = regex->str; |
|
|
|
|
gchar *pattern_str = str->str; |
|
|
|
|
|
|
|
|
|
rule->pattern = NULL; |
|
|
|
|
rule->regex = NULL; |
|
|
|
|
rule->type = REDIRECT_ABSOLUTE_URI; |
|
|
|
|
|
|
|
|
|
if (regex_str[0] == '/') { |
|
|
|
|
if (pattern_str[0] == '/') { |
|
|
|
|
rule->type = REDIRECT_ABSOLUTE_PATH; |
|
|
|
|
} else if (regex_str[0] == '?') { |
|
|
|
|
} else if (pattern_str[0] == '?') { |
|
|
|
|
rule->type = REDIRECT_RELATIVE_QUERY; |
|
|
|
|
} else if (g_str_has_prefix(regex_str, "./")) { |
|
|
|
|
regex_str += 2; |
|
|
|
|
} else if (g_str_has_prefix(pattern_str, "./")) { |
|
|
|
|
pattern_str += 2; |
|
|
|
|
rule->type = REDIRECT_RELATIVE_PATH; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
rule->pattern = li_pattern_new(srv, str->str); |
|
|
|
|
rule->pattern = li_pattern_new(srv, pattern_str); |
|
|
|
|
if (NULL == rule->pattern) { |
|
|
|
|
goto error; |
|
|
|
|
} |
|
|
|
|