| 111 | The server and directory configurations would be fairly useless without support for adding custom Apache directives for an HLL module. Here we will learn how to define a custom directive. Registration of the directive occurs when you add the module to Apache. |
| 112 | |
| 113 | A directive can be defined as a Parrot Hash, or any HLL type that implements a keyed-by-string interface. There are five keys for which you need to provide values: |
| 114 | |
| 115 | * {{{name}}}: the name of the directive as specified in the Apache configuration file |
| 116 | * {{{args_how}}}: a constant defining how arguments are processed |
| 117 | * {{{func}}}: a reference to a callback subroutine that will process the arguments |
| 118 | * {{{req_override}}}: a constant defining where in the Apache configuration file the directive can be used |
| 119 | * {{{errmsg}}}: a message displayed when the directive is misused |
| 120 | |
| 121 | ''Values for {{{args_how}}}'' |
| 122 | |
| 123 | ||{{{NO_ARGS}}}||no arguments|| |
| 124 | ||{{{TAKE1}}}||one argument|| |
| 125 | ||{{{TAKE2}}}||two arguments|| |
| 126 | ||{{{TAKE3}}}||three arguments|| |
| 127 | ||{{{TAKE12}}}||one or two arguments|| |
| 128 | ||{{{TAKE23}}}||two or three arguments|| |
| 129 | ||{{{TAKE123}}}||one two or three arguments|| |
| 130 | ||{{{ITERATE}}}||a list of arguments passed to the callback one at a time|| |
| 131 | ||{{{ITERATE2}}}||one argument followed by a list of arguments passed to the callback one at a time, along with the first argument|| |
| 132 | ||{{{FLAG}}}||a single On or Off argument, passed to the callback as 0 (off) or 1 (on)|| |
| 133 | ||{{{RAW_ARGS}}}||x|| |
| 134 | |
| 135 | ''Values for {{{req_override}}}'' |
| 136 | |
| 137 | ||{{{ACCESS_CONF}}}||can be used in directory sections, but not in .htaccess files|| |
| 138 | ||{{{OR_NONE}}}||cannot be overridden by AllowOverride|| |
| 139 | ||{{{OR_ALL}}}||can be used anywhere in the configuration|| |
| 140 | ||{{{OR_AUTHCFG}}}||can be used inside directory sections (and .htaccess with the {{{AuthConfig}}} override)|| |
| 141 | ||{{{OR_FILEINFO}}}||can be used anywhere (and .htaccess with the {{{FileInfo}}} override)|| |
| 142 | ||{{{OR_INDEXES}}}||can be used anywhere (and .htaccess with the {{{Indexes}}} override|| |
| 143 | ||{{{OR_OPTIONS}}}||can be used anywhere (and .htaccess with the {{{Options}}} override|| |
| 144 | ||{{{OR_LIMIT}}}||can be used in directory sections (and .htaccess with the {{{Options}}} override|| |
| 145 | ||{{{RSRC_CONF}}}||can be used outside of a directory section (not allowed in .htaccess)|| |
| 146 | ||{{{OR_UNSET}}}||not yet implemented|| |
| 147 | ||{{{EXEC_ON_READ}}}||not yet implemented|| |
| 148 | |
| 149 | |