optionally tries to adapt its general behavior according to its settings and its current operating conditions; manages client connection(s) (accepting new ones or closing the existing ones as required); receives client requests (by reading HTTP messages): reads and verify each HTTP request message; usually performs URL normalization; usually performs URL mapping (which may default to URL path translation); usually performs URL path translation along with various security checks; executes or refuses requested HTTP method: optionally manages URL authorizations; optionally manages URL redirections; optionally manages requests for static resources (file contents): optionally manages directory index files; optionally manages regular files; optionally manages requests for dynamic resources: optionally manages directory listings; optionally manages program or module processing, checking the availability, the start and eventually the stop of the execution of external programs used to generate dynamic content; optionally manages the communications with external programs / internal modules used to generate dynamic content; replies to client requests sending proper HTTP responses (e.g. requested resources or error messages) eventually verifying or adding HTTP headers to those sent by dynamic programs / modules; optionally logs (partially or totally) client requests and/or its responses to an external user log file or to a system log file by syslog, usually using common log format; optionally logs process messages about detected anomalies or other notable events (e.g. in client requests or in its internal functioning) using syslog or some other system facilities; these log messages usually have a debug, warning, error, alert level which can be filtered (not logged) depending on some settings, see also severity level; optionally generates statistics about web traffic managed and/or its performances; other custom tasks. Read request message Web server programs are able: to read an HTTP request message; to interpret it; to verify its syntax; to identify known HTTP headers and to extract their values from them. Once an HTTP request message has been decoded and verified, its values can be used to determine whether that request can be satisfied or not. This requires many other steps, including security checks. URL normalization Web server programs usually perform some type of URL normalization (URL found in most HTTP request messages) in order: to make resource path always a clean uniform path from root directory of website; to lower security risks (e.g. by intercepting more easily attempts to access static resources outside the root directory of the website or to access to portions of