Apache HTTPD
Classes | Macros | Typedefs | Enumerations | Functions | Variables
mod_rewrite.c File Reference
#include "apr.h"
#include "apr_strings.h"
#include "apr_hash.h"
#include "apr_user.h"
#include "apr_lib.h"
#include "apr_signal.h"
#include "apr_global_mutex.h"
#include "apr_dbm.h"
#include "apr_dbd.h"
#include "apr_version.h"
#include "apu_version.h"
#include "mod_dbd.h"
#include "apr_want.h"
#include "ap_config.h"
#include "httpd.h"
#include "http_config.h"
#include "http_request.h"
#include "http_core.h"
#include "http_log.h"
#include "http_protocol.h"
#include "http_ssl.h"
#include "http_vhost.h"
#include "util_mutex.h"
#include "mod_rewrite.h"
#include "ap_expr.h"
#include "test_char.h"

Go to the source code of this file.

Classes

struct  rewritemap_entry
 
struct  rewritecond_entry
 
struct  data_item
 
struct  rewriterule_entry
 
struct  rewrite_server_conf
 
struct  rewrite_perdir_conf
 
struct  cache
 
struct  cachedmap
 
struct  backrefinfo
 
struct  result_list
 
struct  rewrite_ctx
 

Macros

#define APR_WANT_MEMFUNC
 
#define APR_WANT_STRFUNC
 
#define APR_WANT_IOVEC
 
#define rewritelog(x)   do_rewritelog x
 
#define REWRITELOG_MODE   ( APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD )
 
#define REWRITELOG_FLAGS   ( APR_WRITE | APR_APPEND | APR_CREATE )
 
#define REWRITE_FORCED_MIMETYPE_NOTEVAR   "rewrite-forced-mimetype"
 
#define REWRITE_FORCED_HANDLER_NOTEVAR   "rewrite-forced-handler"
 
#define ENVVAR_SCRIPT_URL   "SCRIPT_URL"
 
#define REDIRECT_ENVVAR_SCRIPT_URL   "REDIRECT_" ENVVAR_SCRIPT_URL
 
#define ENVVAR_SCRIPT_URI   "SCRIPT_URI"
 
#define CONDFLAG_NONE   (1<<0)
 
#define CONDFLAG_NOCASE   (1<<1)
 
#define CONDFLAG_NOTMATCH   (1<<2)
 
#define CONDFLAG_ORNEXT   (1<<3)
 
#define CONDFLAG_NOVARY   (1<<4)
 
#define RULEFLAG_NONE   (1<<0)
 
#define RULEFLAG_FORCEREDIRECT   (1<<1)
 
#define RULEFLAG_LASTRULE   (1<<2)
 
#define RULEFLAG_NEWROUND   (1<<3)
 
#define RULEFLAG_CHAIN   (1<<4)
 
#define RULEFLAG_IGNOREONSUBREQ   (1<<5)
 
#define RULEFLAG_NOTMATCH   (1<<6)
 
#define RULEFLAG_PROXY   (1<<7)
 
#define RULEFLAG_PASSTHROUGH   (1<<8)
 
#define RULEFLAG_QSAPPEND   (1<<9)
 
#define RULEFLAG_NOCASE   (1<<10)
 
#define RULEFLAG_NOESCAPE   (1<<11)
 
#define RULEFLAG_NOSUB   (1<<12)
 
#define RULEFLAG_STATUS   (1<<13)
 
#define RULEFLAG_ESCAPEBACKREF   (1<<14)
 
#define RULEFLAG_DISCARDPATHINFO   (1<<15)
 
#define RULEFLAG_QSDISCARD   (1<<16)
 
#define RULEFLAG_END   (1<<17)
 
#define RULEFLAG_ESCAPENOPLUS   (1<<18)
 
#define RULEFLAG_QSLAST   (1<<19)
 
#define RULEFLAG_QSNONE   (1<<20) /* programattic only */
 
#define RULEFLAG_ESCAPECTLS   (1<<21)
 
#define RULEFLAG_UNSAFE_PREFIX_STAT   (1<<22)
 
#define RULEFLAG_UNSAFE_ALLOW3F   (1<<23)
 
#define RULEFLAG_UNC   (1<<24)
 
#define ACTION_NORMAL   (1<<0)
 
#define ACTION_NOESCAPE   (1<<1)
 
#define ACTION_STATUS   (1<<2)
 
#define ACTION_STATUS_SET   (1<<3)
 
#define MAPTYPE_TXT   (1<<0)
 
#define MAPTYPE_DBM   (1<<1)
 
#define MAPTYPE_PRG   (1<<2)
 
#define MAPTYPE_INT   (1<<3)
 
#define MAPTYPE_RND   (1<<4)
 
#define MAPTYPE_DBD   (1<<5)
 
#define MAPTYPE_DBD_CACHE   (1<<6)
 
#define ENGINE_DISABLED   (1<<0)
 
#define ENGINE_ENABLED   (1<<1)
 
#define OPTION_NONE   (1<<0)
 
#define OPTION_INHERIT   (1<<1)
 
#define OPTION_INHERIT_BEFORE   (1<<2)
 
#define OPTION_NOSLASH   (1<<3)
 
#define OPTION_ANYURI   (1<<4)
 
#define OPTION_MERGEBASE   (1<<5)
 
#define OPTION_INHERIT_DOWN   (1<<6)
 
#define OPTION_INHERIT_DOWN_BEFORE   (1<<7)
 
#define OPTION_IGNORE_INHERIT   (1<<8)
 
#define OPTION_IGNORE_CONTEXT_INFO   (1<<9)
 
#define OPTION_LEGACY_PREFIX_DOCROOT   (1<<10)
 
#define OPTION_UNSAFE_PREFIX_STAT   (1<<12)
 
#define RAND_MAX   32767
 
#define MAX_COOKIE_LEN   4096
 
#define REWRITE_MAX_TXT_MAP_LINE   1024
 
#define REWRITE_PRG_MAP_BUF   1024
 
#define LEFT_CURLY   '{'
 
#define RIGHT_CURLY   '}'
 
#define SMALL_EXPANSION   5
 
#define subreq_ok(r)
 
#define REWRITE_MAX_ROUNDS   32000
 

Typedefs

typedef struct data_item data_item
 
typedef struct cache cache
 
typedef struct backrefinfo backrefinfo
 
typedef struct result_list result_list
 

Enumerations

enum  pattern_type {
  CONDPAT_REGEX = 0 , CONDPAT_FILE_EXISTS , CONDPAT_FILE_SIZE , CONDPAT_FILE_LINK ,
  CONDPAT_FILE_DIR , CONDPAT_FILE_XBIT , CONDPAT_LU_URL , CONDPAT_LU_FILE ,
  CONDPAT_STR_LT , CONDPAT_STR_LE , CONDPAT_STR_EQ , CONDPAT_STR_GT ,
  CONDPAT_STR_GE , CONDPAT_INT_LT , CONDPAT_INT_LE , CONDPAT_INT_EQ ,
  CONDPAT_INT_GT , CONDPAT_INT_GE , CONDPAT_AP_EXPR
}
 
enum  rule_return_type { RULE_RC_NOMATCH = 0 , RULE_RC_MATCH = 1 , RULE_RC_NOSUB = 2 , RULE_RC_STATUS_SET = 3 }
 

Functions

static charescape_backref (apr_pool_t *p, const char *path, const char *escapeme, const char *noescapeme, int flags)
 
static void do_rewritelog (request_rec *r, int level, char *perdir, const char *fmt,...) __attribute__((format(printf
 
static unsigned is_absolute_uri (char *uri, int *supportsqs)
 
static int is_absolute_path (const char *path)
 
static APR_INLINE unsigned charc2x (unsigned what, unsigned char prefix, unsigned char *where)
 
static charescape_absolute_uri (apr_pool_t *p, char *uri, unsigned scheme)
 
static void splitout_queryargs (request_rec *r, int flags)
 
static void reduce_uri (request_rec *r)
 
static void fully_qualify_uri (request_rec *r)
 
static int startsWith (request_rec *r, const char *haystack, const char *needle)
 
static int prefix_stat (request_rec *r, const char *path, apr_pool_t *pool, rewriterule_entry *lastsub)
 
static charsubst_prefix_path (request_rec *r, char *input, const char *match, const char *subst)
 
static void set_cache_value (const char *name, apr_time_t t, char *key, char *val)
 
static charget_cache_value (const char *name, apr_time_t t, char *key, apr_pool_t *p)
 
static int init_cache (apr_pool_t *p)
 
static charrewrite_mapfunc_toupper (request_rec *r, char *key)
 
static charrewrite_mapfunc_tolower (request_rec *r, char *key)
 
static charrewrite_mapfunc_escape (request_rec *r, char *key)
 
static charrewrite_mapfunc_unescape (request_rec *r, char *key)
 
static charselect_random_value_part (request_rec *r, char *value)
 
static void rewrite_child_errfn (apr_pool_t *p, apr_status_t err, const char *desc)
 
static apr_status_t rewritemap_program_child (apr_pool_t *p, const char *progname, char **argv, const char *user, const char *group, apr_file_t **fpout, apr_file_t **fpin)
 
static apr_status_t run_rewritemap_programs (server_rec *s, apr_pool_t *p)
 
static charlookup_map_txtfile (request_rec *r, const char *file, char *key)
 
static charlookup_map_dbmfile (request_rec *r, const char *file, const char *dbmtype, char *key)
 
static charlookup_map_dbd (request_rec *r, char *key, const char *label)
 
static charlookup_map_program (request_rec *r, apr_file_t *fpin, apr_file_t *fpout, char *key)
 
static charlookup_map (request_rec *r, char *name, char *key)
 
static const charlookup_header (const char *name, rewrite_ctx *ctx)
 
static APR_INLINE const charla_u (rewrite_ctx *ctx)
 
static charlookup_variable (char *var, rewrite_ctx *ctx)
 
static APR_INLINE charfind_closing_curly (char *s)
 
static APR_INLINE charfind_char_in_curlies (char *s, int c)
 
static chardo_expand (char *input, rewrite_ctx *ctx, rewriterule_entry *entry)
 
static void do_expand_env (data_item *env, rewrite_ctx *ctx)
 
static void add_cookie (request_rec *r, char *s)
 
static void do_expand_cookie (data_item *cookie, rewrite_ctx *ctx)
 
static apr_status_t rewritelock_create (server_rec *s, apr_pool_t *p)
 
static apr_status_t rewritelock_remove (void *data)
 
static int parseargline (char *str, char **a1, char **a2, char **a2_end, char **a3)
 
static void * config_server_create (apr_pool_t *p, server_rec *s)
 
static void * config_server_merge (apr_pool_t *p, void *basev, void *overridesv)
 
static void * config_perdir_create (apr_pool_t *p, char *path)
 
static void * config_perdir_merge (apr_pool_t *p, void *basev, void *overridesv)
 
static const charcmd_rewriteengine (cmd_parms *cmd, void *in_dconf, int flag)
 
static const charcmd_rewriteoptions (cmd_parms *cmd, void *in_dconf, const char *option)
 
static const charcmd_rewritemap (cmd_parms *cmd, void *dconf, const char *a1, const char *a2, const char *a3)
 
static const charcmd_rewritebase (cmd_parms *cmd, void *in_dconf, const char *a1)
 
static const charcmd_parseflagfield (apr_pool_t *p, void *cfg, char *key, const char *(*parse)(apr_pool_t *, void *, char *, char *))
 
static const charcmd_rewritecond_setflag (apr_pool_t *p, void *_cfg, char *key, char *val)
 
static const charcmd_rewritecond (cmd_parms *cmd, void *in_dconf, const char *in_str)
 
static const charcmd_rewriterule_setflag (apr_pool_t *p, void *_cfg, char *key, char *val)
 
static const charcmd_rewriterule (cmd_parms *cmd, void *in_dconf, const char *in_str)
 
static APR_INLINE int compare_lexicography (char *a, char *b)
 
static int apply_rewrite_cond (rewritecond_entry *p, rewrite_ctx *ctx)
 
static APR_INLINE void force_type_handler (rewriterule_entry *p, rewrite_ctx *ctx)
 
static rule_return_type apply_rewrite_rule (rewriterule_entry *p, rewrite_ctx *ctx)
 
static int apply_rewrite_list (request_rec *r, apr_array_header_t *rewriterules, char *perdir, rewriterule_entry **lastsub)
 
static int pre_config (apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
 
static int post_config (apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
 
static void init_child (apr_pool_t *p, server_rec *s)
 
static int hook_uri2file (request_rec *r)
 
static int hook_fixup (request_rec *r)
 
static int hook_mimetype (request_rec *r)
 
static int handler_redirect (request_rec *r)
 
static void ap_register_rewrite_mapfunc (char *name, rewrite_mapfunc_t *func)
 
static void register_hooks (apr_pool_t *p)
 

Variables

static ap_dbd_t *(* dbd_acquire )(request_rec *) = NULL
 
static void(* dbd_prepare )(server_rec *, const char *, const char *) = NULL
 
static const charreally_last_key = "rewrite_really_last"
 
static apr_hash_tmapfunc_hash
 
static cachecachep
 
static int proxy_available
 
static int rewrite_lock_needed = 0
 
static apr_global_mutex_trewrite_mapr_lock_acquire = NULL
 
static const charrewritemap_mutex_type = "rewrite-map"
 
static const char c2x_table [] = "0123456789abcdef"
 
static const command_rec command_table []
 
static int *const aplog_module_index = &( rewrite_module.module_index)
 

Macro Definition Documentation

◆ ACTION_NOESCAPE

#define ACTION_NOESCAPE   (1<<1)

Definition at line 188 of file mod_rewrite.c.

◆ ACTION_NORMAL

#define ACTION_NORMAL   (1<<0)

Definition at line 187 of file mod_rewrite.c.

◆ ACTION_STATUS

#define ACTION_STATUS   (1<<2)

Definition at line 189 of file mod_rewrite.c.

◆ ACTION_STATUS_SET

#define ACTION_STATUS_SET   (1<<3)

Definition at line 190 of file mod_rewrite.c.

◆ APR_WANT_IOVEC

#define APR_WANT_IOVEC

Definition at line 72 of file mod_rewrite.c.

◆ APR_WANT_MEMFUNC

#define APR_WANT_MEMFUNC

Definition at line 70 of file mod_rewrite.c.

◆ APR_WANT_STRFUNC

#define APR_WANT_STRFUNC

Definition at line 71 of file mod_rewrite.c.

◆ CONDFLAG_NOCASE

#define CONDFLAG_NOCASE   (1<<1)

Definition at line 153 of file mod_rewrite.c.

◆ CONDFLAG_NONE

#define CONDFLAG_NONE   (1<<0)

Definition at line 152 of file mod_rewrite.c.

◆ CONDFLAG_NOTMATCH

#define CONDFLAG_NOTMATCH   (1<<2)

Definition at line 154 of file mod_rewrite.c.

◆ CONDFLAG_NOVARY

#define CONDFLAG_NOVARY   (1<<4)

Definition at line 156 of file mod_rewrite.c.

◆ CONDFLAG_ORNEXT

#define CONDFLAG_ORNEXT   (1<<3)

Definition at line 155 of file mod_rewrite.c.

◆ ENGINE_DISABLED

#define ENGINE_DISABLED   (1<<0)

Definition at line 200 of file mod_rewrite.c.

◆ ENGINE_ENABLED

#define ENGINE_ENABLED   (1<<1)

Definition at line 201 of file mod_rewrite.c.

◆ ENVVAR_SCRIPT_URI

#define ENVVAR_SCRIPT_URI   "SCRIPT_URI"

Definition at line 150 of file mod_rewrite.c.

◆ ENVVAR_SCRIPT_URL

#define ENVVAR_SCRIPT_URL   "SCRIPT_URL"

Definition at line 148 of file mod_rewrite.c.

◆ LEFT_CURLY

#define LEFT_CURLY   '{'

Definition at line 235 of file mod_rewrite.c.

◆ MAPTYPE_DBD

#define MAPTYPE_DBD   (1<<5)

Definition at line 197 of file mod_rewrite.c.

◆ MAPTYPE_DBD_CACHE

#define MAPTYPE_DBD_CACHE   (1<<6)

Definition at line 198 of file mod_rewrite.c.

◆ MAPTYPE_DBM

#define MAPTYPE_DBM   (1<<1)

Definition at line 193 of file mod_rewrite.c.

◆ MAPTYPE_INT

#define MAPTYPE_INT   (1<<3)

Definition at line 195 of file mod_rewrite.c.

◆ MAPTYPE_PRG

#define MAPTYPE_PRG   (1<<2)

Definition at line 194 of file mod_rewrite.c.

◆ MAPTYPE_RND

#define MAPTYPE_RND   (1<<4)

Definition at line 196 of file mod_rewrite.c.

◆ MAPTYPE_TXT

#define MAPTYPE_TXT   (1<<0)

Definition at line 192 of file mod_rewrite.c.

◆ MAX_COOKIE_LEN

#define MAX_COOKIE_LEN   4096

Definition at line 222 of file mod_rewrite.c.

◆ OPTION_ANYURI

#define OPTION_ANYURI   (1<<4)

Definition at line 207 of file mod_rewrite.c.

◆ OPTION_IGNORE_CONTEXT_INFO

#define OPTION_IGNORE_CONTEXT_INFO   (1<<9)

Definition at line 212 of file mod_rewrite.c.

◆ OPTION_IGNORE_INHERIT

#define OPTION_IGNORE_INHERIT   (1<<8)

Definition at line 211 of file mod_rewrite.c.

◆ OPTION_INHERIT

#define OPTION_INHERIT   (1<<1)

Definition at line 204 of file mod_rewrite.c.

◆ OPTION_INHERIT_BEFORE

#define OPTION_INHERIT_BEFORE   (1<<2)

Definition at line 205 of file mod_rewrite.c.

◆ OPTION_INHERIT_DOWN

#define OPTION_INHERIT_DOWN   (1<<6)

Definition at line 209 of file mod_rewrite.c.

◆ OPTION_INHERIT_DOWN_BEFORE

#define OPTION_INHERIT_DOWN_BEFORE   (1<<7)

Definition at line 210 of file mod_rewrite.c.

◆ OPTION_LEGACY_PREFIX_DOCROOT

#define OPTION_LEGACY_PREFIX_DOCROOT   (1<<10)

Definition at line 213 of file mod_rewrite.c.

◆ OPTION_MERGEBASE

#define OPTION_MERGEBASE   (1<<5)

Definition at line 208 of file mod_rewrite.c.

◆ OPTION_NONE

#define OPTION_NONE   (1<<0)

Definition at line 203 of file mod_rewrite.c.

◆ OPTION_NOSLASH

#define OPTION_NOSLASH   (1<<3)

Definition at line 206 of file mod_rewrite.c.

◆ OPTION_UNSAFE_PREFIX_STAT

#define OPTION_UNSAFE_PREFIX_STAT   (1<<12)

Definition at line 214 of file mod_rewrite.c.

◆ RAND_MAX

#define RAND_MAX   32767

Definition at line 217 of file mod_rewrite.c.

◆ REDIRECT_ENVVAR_SCRIPT_URL

#define REDIRECT_ENVVAR_SCRIPT_URL   "REDIRECT_" ENVVAR_SCRIPT_URL

Definition at line 149 of file mod_rewrite.c.

◆ REWRITE_FORCED_HANDLER_NOTEVAR

#define REWRITE_FORCED_HANDLER_NOTEVAR   "rewrite-forced-handler"

Definition at line 146 of file mod_rewrite.c.

◆ REWRITE_FORCED_MIMETYPE_NOTEVAR

#define REWRITE_FORCED_MIMETYPE_NOTEVAR   "rewrite-forced-mimetype"

Definition at line 145 of file mod_rewrite.c.

◆ REWRITE_MAX_ROUNDS

#define REWRITE_MAX_ROUNDS   32000

Definition at line 255 of file mod_rewrite.c.

◆ REWRITE_MAX_TXT_MAP_LINE

#define REWRITE_MAX_TXT_MAP_LINE   1024

Definition at line 226 of file mod_rewrite.c.

◆ REWRITE_PRG_MAP_BUF

#define REWRITE_PRG_MAP_BUF   1024

Definition at line 231 of file mod_rewrite.c.

◆ rewritelog

#define rewritelog (   x)    do_rewritelog x

Definition at line 134 of file mod_rewrite.c.

◆ REWRITELOG_FLAGS

#define REWRITELOG_FLAGS   ( APR_WRITE | APR_APPEND | APR_CREATE )

Definition at line 136 of file mod_rewrite.c.

◆ REWRITELOG_MODE

#define REWRITELOG_MODE   ( APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD )

Definition at line 135 of file mod_rewrite.c.

◆ RIGHT_CURLY

#define RIGHT_CURLY   '}'

Definition at line 236 of file mod_rewrite.c.

◆ RULEFLAG_CHAIN

#define RULEFLAG_CHAIN   (1<<4)

Definition at line 162 of file mod_rewrite.c.

◆ RULEFLAG_DISCARDPATHINFO

#define RULEFLAG_DISCARDPATHINFO   (1<<15)

Definition at line 173 of file mod_rewrite.c.

◆ RULEFLAG_END

#define RULEFLAG_END   (1<<17)

Definition at line 175 of file mod_rewrite.c.

◆ RULEFLAG_ESCAPEBACKREF

#define RULEFLAG_ESCAPEBACKREF   (1<<14)

Definition at line 172 of file mod_rewrite.c.

◆ RULEFLAG_ESCAPECTLS

#define RULEFLAG_ESCAPECTLS   (1<<21)

Definition at line 179 of file mod_rewrite.c.

◆ RULEFLAG_ESCAPENOPLUS

#define RULEFLAG_ESCAPENOPLUS   (1<<18)

Definition at line 176 of file mod_rewrite.c.

◆ RULEFLAG_FORCEREDIRECT

#define RULEFLAG_FORCEREDIRECT   (1<<1)

Definition at line 159 of file mod_rewrite.c.

◆ RULEFLAG_IGNOREONSUBREQ

#define RULEFLAG_IGNOREONSUBREQ   (1<<5)

Definition at line 163 of file mod_rewrite.c.

◆ RULEFLAG_LASTRULE

#define RULEFLAG_LASTRULE   (1<<2)

Definition at line 160 of file mod_rewrite.c.

◆ RULEFLAG_NEWROUND

#define RULEFLAG_NEWROUND   (1<<3)

Definition at line 161 of file mod_rewrite.c.

◆ RULEFLAG_NOCASE

#define RULEFLAG_NOCASE   (1<<10)

Definition at line 168 of file mod_rewrite.c.

◆ RULEFLAG_NOESCAPE

#define RULEFLAG_NOESCAPE   (1<<11)

Definition at line 169 of file mod_rewrite.c.

◆ RULEFLAG_NONE

#define RULEFLAG_NONE   (1<<0)

Definition at line 158 of file mod_rewrite.c.

◆ RULEFLAG_NOSUB

#define RULEFLAG_NOSUB   (1<<12)

Definition at line 170 of file mod_rewrite.c.

◆ RULEFLAG_NOTMATCH

#define RULEFLAG_NOTMATCH   (1<<6)

Definition at line 164 of file mod_rewrite.c.

◆ RULEFLAG_PASSTHROUGH

#define RULEFLAG_PASSTHROUGH   (1<<8)

Definition at line 166 of file mod_rewrite.c.

◆ RULEFLAG_PROXY

#define RULEFLAG_PROXY   (1<<7)

Definition at line 165 of file mod_rewrite.c.

◆ RULEFLAG_QSAPPEND

#define RULEFLAG_QSAPPEND   (1<<9)

Definition at line 167 of file mod_rewrite.c.

◆ RULEFLAG_QSDISCARD

#define RULEFLAG_QSDISCARD   (1<<16)

Definition at line 174 of file mod_rewrite.c.

◆ RULEFLAG_QSLAST

#define RULEFLAG_QSLAST   (1<<19)

Definition at line 177 of file mod_rewrite.c.

◆ RULEFLAG_QSNONE

#define RULEFLAG_QSNONE   (1<<20) /* programattic only */

Definition at line 178 of file mod_rewrite.c.

◆ RULEFLAG_STATUS

#define RULEFLAG_STATUS   (1<<13)

Definition at line 171 of file mod_rewrite.c.

◆ RULEFLAG_UNC

#define RULEFLAG_UNC   (1<<24)

Definition at line 182 of file mod_rewrite.c.

◆ RULEFLAG_UNSAFE_ALLOW3F

#define RULEFLAG_UNSAFE_ALLOW3F   (1<<23)

Definition at line 181 of file mod_rewrite.c.

◆ RULEFLAG_UNSAFE_PREFIX_STAT

#define RULEFLAG_UNSAFE_PREFIX_STAT   (1<<22)

Definition at line 180 of file mod_rewrite.c.

◆ SMALL_EXPANSION

#define SMALL_EXPANSION   5

Definition at line 243 of file mod_rewrite.c.

◆ subreq_ok

#define subreq_ok (   r)
Value:
(!r->main || \
(r->main->uri && r->uri && strcmp(r->main->uri, r->uri)))
request_rec * r
apr_size_t size
char * uri
Definition httpd.h:1016
request_rec * main
Definition httpd.h:860

Definition at line 251 of file mod_rewrite.c.

Typedef Documentation

◆ backrefinfo

◆ cache

◆ data_item

◆ result_list

Enumeration Type Documentation

◆ pattern_type

Enumerator
CONDPAT_REGEX 
CONDPAT_FILE_EXISTS 
CONDPAT_FILE_SIZE 
CONDPAT_FILE_LINK 
CONDPAT_FILE_DIR 
CONDPAT_FILE_XBIT 
CONDPAT_LU_URL 
CONDPAT_LU_FILE 
CONDPAT_STR_LT 
CONDPAT_STR_LE 
CONDPAT_STR_EQ 
CONDPAT_STR_GT 
CONDPAT_STR_GE 
CONDPAT_INT_LT 
CONDPAT_INT_LE 
CONDPAT_INT_EQ 
CONDPAT_INT_GT 
CONDPAT_INT_GE 
CONDPAT_AP_EXPR 

Definition at line 286 of file mod_rewrite.c.

◆ rule_return_type

Enumerator
RULE_RC_NOMATCH 
RULE_RC_MATCH 
RULE_RC_NOSUB 
RULE_RC_STATUS_SET 

Definition at line 308 of file mod_rewrite.c.

Function Documentation

◆ add_cookie()

static void add_cookie ( request_rec r,
char s 
)
static

Definition at line 2623 of file mod_rewrite.c.

◆ ap_register_rewrite_mapfunc()

static void ap_register_rewrite_mapfunc ( char name,
rewrite_mapfunc_t func 
)
static

Definition at line 5535 of file mod_rewrite.c.

◆ apply_rewrite_cond()

static int apply_rewrite_cond ( rewritecond_entry p,
rewrite_ctx ctx 
)
static

< type, mtime, ctime, atime, size

< type, mtime, ctime, atime, size

< type, mtime, ctime, atime, size

< Stat the link not the file itself if it is a link

< type, mtime, ctime, atime, size

< all protections

< Execute by user

<

Deprecated:
See also
APR_FPROT_UEXECUTE

< Execute by group

<

Deprecated:
See also
APR_FPROT_GEXECUTE

< Execute by others

<

Deprecated:
See also
APR_FPROT_WEXECUTE

< type, mtime, ctime, atime, size

Definition at line 4007 of file mod_rewrite.c.

◆ apply_rewrite_list()

static int apply_rewrite_list ( request_rec r,
apr_array_header_t rewriterules,
char perdir,
rewriterule_entry **  lastsub 
)
static

Definition at line 4492 of file mod_rewrite.c.

◆ apply_rewrite_rule()

static rule_return_type apply_rewrite_rule ( rewriterule_entry p,
rewrite_ctx ctx 
)
static

Definition at line 4212 of file mod_rewrite.c.

◆ c2x()

static APR_INLINE unsigned char * c2x ( unsigned  what,
unsigned char  prefix,
unsigned char where 
)
static

Definition at line 669 of file mod_rewrite.c.

◆ cmd_parseflagfield()

static const char * cmd_parseflagfield ( apr_pool_t p,
void *  cfg,
char key,
const char *(*)(apr_pool_t *, void *, char *, char *)  parse 
)
static

Definition at line 3336 of file mod_rewrite.c.

◆ cmd_rewritebase()

static const char * cmd_rewritebase ( cmd_parms cmd,
void *  in_dconf,
const char a1 
)
static

Definition at line 3310 of file mod_rewrite.c.

◆ cmd_rewritecond()

static const char * cmd_rewritecond ( cmd_parms cmd,
void *  in_dconf,
const char in_str 
)
static

unused

use a case-insensitive match

Definition at line 3414 of file mod_rewrite.c.

◆ cmd_rewritecond_setflag()

static const char * cmd_rewritecond_setflag ( apr_pool_t p,
void *  _cfg,
char key,
char val 
)
static

Definition at line 3391 of file mod_rewrite.c.

◆ cmd_rewriteengine()

static const char * cmd_rewriteengine ( cmd_parms cmd,
void *  in_dconf,
int  flag 
)
static

Definition at line 3059 of file mod_rewrite.c.

◆ cmd_rewritemap()

static const char * cmd_rewritemap ( cmd_parms cmd,
void *  dconf,
const char a1,
const char a2,
const char a3 
)
static

< type, mtime, ctime, atime, size

Definition at line 3160 of file mod_rewrite.c.

◆ cmd_rewriteoptions()

static const char * cmd_rewriteoptions ( cmd_parms cmd,
void *  in_dconf,
const char option 
)
static

Definition at line 3083 of file mod_rewrite.c.

◆ cmd_rewriterule()

static const char * cmd_rewriterule ( cmd_parms cmd,
void *  in_dconf,
const char in_str 
)
static

unused

use a case-insensitive match

Definition at line 3866 of file mod_rewrite.c.

◆ cmd_rewriterule_setflag()

static const char * cmd_rewriterule_setflag ( apr_pool_t p,
void *  _cfg,
char key,
char val 
)
static

Definition at line 3588 of file mod_rewrite.c.

◆ compare_lexicography()

static APR_INLINE int compare_lexicography ( char a,
char b 
)
static

Definition at line 3984 of file mod_rewrite.c.

◆ config_perdir_create()

static void * config_perdir_create ( apr_pool_t p,
char path 
)
static

Definition at line 2983 of file mod_rewrite.c.

◆ config_perdir_merge()

static void * config_perdir_merge ( apr_pool_t p,
void *  basev,
void *  overridesv 
)
static

Definition at line 3011 of file mod_rewrite.c.

◆ config_server_create()

static void * config_server_create ( apr_pool_t p,
server_rec s 
)
static

Definition at line 2910 of file mod_rewrite.c.

◆ config_server_merge()

static void * config_server_merge ( apr_pool_t p,
void *  basev,
void *  overridesv 
)
static

Definition at line 2926 of file mod_rewrite.c.

◆ do_expand()

static char * do_expand ( char input,
rewrite_ctx ctx,
rewriterule_entry entry 
)
static

Definition at line 2380 of file mod_rewrite.c.

◆ do_expand_cookie()

static void do_expand_cookie ( data_item cookie,
rewrite_ctx ctx 
)
static

Definition at line 2725 of file mod_rewrite.c.

◆ do_expand_env()

static void do_expand_env ( data_item env,
rewrite_ctx ctx 
)
static

Definition at line 2589 of file mod_rewrite.c.

◆ do_rewritelog()

static void static void do_rewritelog ( request_rec r,
int  level,
char perdir,
const char fmt,
  ... 
)
static

Definition at line 463 of file mod_rewrite.c.

◆ escape_absolute_uri()

static char * escape_absolute_uri ( apr_pool_t p,
char uri,
unsigned  scheme 
)
static

Definition at line 723 of file mod_rewrite.c.

◆ escape_backref()

static char * escape_backref ( apr_pool_t p,
const char path,
const char escapeme,
const char noescapeme,
int  flags 
)
static

Definition at line 685 of file mod_rewrite.c.

◆ find_char_in_curlies()

static APR_INLINE char * find_char_in_curlies ( char s,
int  c 
)
static

Definition at line 2352 of file mod_rewrite.c.

◆ find_closing_curly()

static APR_INLINE char * find_closing_curly ( char s)
static

Definition at line 2336 of file mod_rewrite.c.

◆ force_type_handler()

static APR_INLINE void force_type_handler ( rewriterule_entry p,
rewrite_ctx ctx 
)
static

Definition at line 4175 of file mod_rewrite.c.

◆ fully_qualify_uri()

static void fully_qualify_uri ( request_rec r)
static

Definition at line 927 of file mod_rewrite.c.

◆ get_cache_value()

static char * get_cache_value ( const char name,
apr_time_t  t,
char key,
apr_pool_t p 
)
static

Definition at line 1133 of file mod_rewrite.c.

◆ handler_redirect()

static int handler_redirect ( request_rec r)
static

< Module declines to handle

< Module declines to handle

< Module has handled this stage.

Definition at line 5490 of file mod_rewrite.c.

◆ hook_fixup()

static int hook_fixup ( request_rec r)
static

< Module declines to handle

< Module declines to handle

< Module declines to handle

< Module declines to handle

< Module declines to handle

< No proxy

< Reverse proxy

< Module has handled this stage.

< Module has handled this stage.

< Module has handled this stage.

< Module declines to handle

Definition at line 5103 of file mod_rewrite.c.

◆ hook_mimetype()

static int hook_mimetype ( request_rec r)
static

< Module has handled this stage.

Definition at line 5461 of file mod_rewrite.c.

◆ hook_uri2file()

static int hook_uri2file ( request_rec r)
static

< Module declines to handle

< Module declines to handle

< Module declines to handle

< Module declines to handle

< Standard proxy

< No proxy

< Reverse proxy

< Module has handled this stage.

< Module declines to handle

< Module has handled this stage.

< Module has handled this stage.

< Module declines to handle

Definition at line 4752 of file mod_rewrite.c.

◆ init_cache()

static int init_cache ( apr_pool_t p)
static

Definition at line 1171 of file mod_rewrite.c.

◆ init_child()

static void init_child ( apr_pool_t p,
server_rec s 
)
static

Definition at line 4718 of file mod_rewrite.c.

◆ is_absolute_path()

static int is_absolute_path ( const char path)
static

Definition at line 657 of file mod_rewrite.c.

◆ is_absolute_uri()

static unsigned is_absolute_uri ( char uri,
int supportsqs 
)
static

Definition at line 535 of file mod_rewrite.c.

◆ la_u()

static APR_INLINE const char * la_u ( rewrite_ctx ctx)
static

Definition at line 1913 of file mod_rewrite.c.

◆ lookup_header()

static const char * lookup_header ( const char name,
rewrite_ctx ctx 
)
static

Definition at line 1892 of file mod_rewrite.c.

◆ lookup_map()

static char * lookup_map ( request_rec r,
char name,
char key 
)
static

< type, mtime, ctime, atime, size

< type, mtime, ctime, atime, size

< type, mtime, ctime, atime, size

Definition at line 1700 of file mod_rewrite.c.

◆ lookup_map_dbd()

static char * lookup_map_dbd ( request_rec r,
char key,
const char label 
)
static

Definition at line 1474 of file mod_rewrite.c.

◆ lookup_map_dbmfile()

static char * lookup_map_dbmfile ( request_rec r,
const char file,
const char dbmtype,
char key 
)
static

< open for read-only access

< use OS's default permissions

<

Deprecated:
See also
APR_FPROT_OS_DEFAULT

Definition at line 1423 of file mod_rewrite.c.

◆ lookup_map_program()

static char * lookup_map_program ( request_rec r,
apr_file_t fpin,
apr_file_t fpout,
char key 
)
static

Definition at line 1533 of file mod_rewrite.c.

◆ lookup_map_txtfile()

static char * lookup_map_txtfile ( request_rec r,
const char file,
char key 
)
static

< Open the file for reading

<

Deprecated:
See also
APR_FOPEN_READ

< Open the file for buffered I/O

<

Deprecated:
See also
APR_FOPEN_BUFFERED

< use OS's default permissions

<

Deprecated:
See also
APR_FPROT_OS_DEFAULT

Definition at line 1363 of file mod_rewrite.c.

◆ lookup_variable()

static char * lookup_variable ( char var,
rewrite_ctx ctx 
)
static

< User

< Group

Definition at line 1931 of file mod_rewrite.c.

◆ parseargline()

static int parseargline ( char str,
char **  a1,
char **  a2,
char **  a2_end,
char **  a3 
)
static

Definition at line 2825 of file mod_rewrite.c.

◆ post_config()

static int post_config ( apr_pool_t p,
apr_pool_t plog,
apr_pool_t ptemp,
server_rec s 
)
static

< Module has handled this stage.

Definition at line 4684 of file mod_rewrite.c.

◆ pre_config()

static int pre_config ( apr_pool_t pconf,
apr_pool_t plog,
apr_pool_t ptemp 
)
static

< Module has handled this stage.

Definition at line 4662 of file mod_rewrite.c.

◆ prefix_stat()

static int prefix_stat ( request_rec r,
const char path,
apr_pool_t pool,
rewriterule_entry lastsub 
)
static

< type, mtime, ctime, atime, size

Definition at line 960 of file mod_rewrite.c.

◆ reduce_uri()

static void reduce_uri ( request_rec r)
static

Definition at line 857 of file mod_rewrite.c.

◆ register_hooks()

static void register_hooks ( apr_pool_t p)
static

Definition at line 5540 of file mod_rewrite.c.

◆ rewrite_child_errfn()

static void rewrite_child_errfn ( apr_pool_t p,
apr_status_t  err,
const char desc 
)
static

Definition at line 1259 of file mod_rewrite.c.

◆ rewrite_mapfunc_escape()

static char * rewrite_mapfunc_escape ( request_rec r,
char key 
)
static

Definition at line 1216 of file mod_rewrite.c.

◆ rewrite_mapfunc_tolower()

static char * rewrite_mapfunc_tolower ( request_rec r,
char key 
)
static

Definition at line 1209 of file mod_rewrite.c.

◆ rewrite_mapfunc_toupper()

static char * rewrite_mapfunc_toupper ( request_rec r,
char key 
)
static

Definition at line 1202 of file mod_rewrite.c.

◆ rewrite_mapfunc_unescape()

static char * rewrite_mapfunc_unescape ( request_rec r,
char key 
)
static

Definition at line 1221 of file mod_rewrite.c.

◆ rewritelock_create()

static apr_status_t rewritelock_create ( server_rec s,
apr_pool_t p 
)
static

Definition at line 2784 of file mod_rewrite.c.

◆ rewritelock_remove()

static apr_status_t rewritelock_remove ( void *  data)
static

Definition at line 2798 of file mod_rewrite.c.

◆ rewritemap_program_child()

static apr_status_t rewritemap_program_child ( apr_pool_t p,
const char progname,
char **  argv,
const char user,
const char group,
apr_file_t **  fpout,
apr_file_t **  fpin 
)
static

Definition at line 1265 of file mod_rewrite.c.

◆ run_rewritemap_programs()

static apr_status_t run_rewritemap_programs ( server_rec s,
apr_pool_t p 
)
static

Definition at line 1307 of file mod_rewrite.c.

◆ select_random_value_part()

static char * select_random_value_part ( request_rec r,
char value 
)
static

Definition at line 1228 of file mod_rewrite.c.

◆ set_cache_value()

static void set_cache_value ( const char name,
apr_time_t  t,
char key,
char val 
)
static

Definition at line 1080 of file mod_rewrite.c.

◆ splitout_queryargs()

static void splitout_queryargs ( request_rec r,
int  flags 
)
static

Definition at line 793 of file mod_rewrite.c.

◆ startsWith()

static int startsWith ( request_rec r,
const char haystack,
const char needle 
)
static

Definition at line 952 of file mod_rewrite.c.

◆ subst_prefix_path()

static char * subst_prefix_path ( request_rec r,
char input,
const char match,
const char subst 
)
static

Definition at line 1030 of file mod_rewrite.c.

Variable Documentation

◆ aplog_module_index

int* const aplog_module_index = &( rewrite_module.module_index)
static

Definition at line 5564 of file mod_rewrite.c.

◆ c2x_table

const char c2x_table[] = "0123456789abcdef"
static

Definition at line 667 of file mod_rewrite.c.

◆ cachep

cache* cachep
static

Definition at line 435 of file mod_rewrite.c.

◆ command_table

const command_rec command_table[]
static
Initial value:
= {
{ "RewriteEngine" , cmd_rewriteengine , NULL , 4 , FLAG, "On or Off to enable or disable (default) the whole " "rewriting engine" },
{ "RewriteOptions" , cmd_rewriteoptions , NULL , 4 , ITERATE, "List of option strings to set" },
{ "RewriteBase" , cmd_rewritebase , NULL , 4 , TAKE1, "the base URL of the per-directory context" },
{ "RewriteCond" , cmd_rewritecond , NULL , 4 , RAW_ARGS, "an input string and a to be applied regexp-pattern" },
{ "RewriteRule" , cmd_rewriterule , NULL , 4 , RAW_ARGS, "an URL-applied regexp-pattern and a substitution URL" },
{ "RewriteMap" , cmd_rewritemap , NULL , 128 , TAKE23, "a mapname and a filename and options" },
{ NULL }
}
@ RAW_ARGS
Definition http_config.h:50
@ TAKE1
Definition http_config.h:51
@ TAKE23
Definition http_config.h:63
@ FLAG
Definition http_config.h:59
@ ITERATE
Definition http_config.h:53
static const char * cmd_rewritemap(cmd_parms *cmd, void *dconf, const char *a1, const char *a2, const char *a3)
static const char * cmd_rewriteengine(cmd_parms *cmd, void *in_dconf, int flag)
static const char * cmd_rewriterule(cmd_parms *cmd, void *in_dconf, const char *in_str)
static const char * cmd_rewritecond(cmd_parms *cmd, void *in_dconf, const char *in_str)
static const char * cmd_rewriteoptions(cmd_parms *cmd, void *in_dconf, const char *option)
static const char * cmd_rewritebase(cmd_parms *cmd, void *in_dconf, const char *a1)
return NULL
Definition mod_so.c:359

Definition at line 5518 of file mod_rewrite.c.

◆ dbd_acquire

ap_dbd_t *(* dbd_acquire) (request_rec *) ( request_rec ) = NULL
static

Definition at line 111 of file mod_rewrite.c.

◆ dbd_prepare

void(* dbd_prepare) (server_rec *, const char *, const char *) ( server_rec ,
const char ,
const char  
) = NULL
static

Definition at line 112 of file mod_rewrite.c.

◆ mapfunc_hash

apr_hash_t* mapfunc_hash
static

Definition at line 432 of file mod_rewrite.c.

◆ proxy_available

int proxy_available
static

Definition at line 438 of file mod_rewrite.c.

◆ really_last_key

const char* really_last_key = "rewrite_really_last"
static

Definition at line 113 of file mod_rewrite.c.

◆ rewrite_lock_needed

int rewrite_lock_needed = 0
static

Definition at line 441 of file mod_rewrite.c.

◆ rewrite_mapr_lock_acquire

apr_global_mutex_t* rewrite_mapr_lock_acquire = NULL
static

Definition at line 442 of file mod_rewrite.c.

◆ rewritemap_mutex_type

const char* rewritemap_mutex_type = "rewrite-map"
static

Definition at line 443 of file mod_rewrite.c.