Apache Error Codes
With the function below you can add your own custom actions to error statuses of Apache.
Lets say you want a custom 404 error page. You could redirect a user upon a 404 error or show a complete different layout.
/** * HTTP Protocol defined status codes * @param int $num */ function HTTPStatus($num) { static $http = array ( 100 => "HTTP/1.1 100 Continue", 101 => "HTTP/1.1 101 Switching Protocols", 200 => "HTTP/1.1 200 OK", 201 => "HTTP/1.1 201 Created", 202 => "HTTP/1.1 202 Accepted", 203 => "HTTP/1.1 203 Non-Authoritative Information", 204 => "HTTP/1.1 204 No Content", 205 => "HTTP/1.1 205 Reset Content", 206 => "HTTP/1.1 206 Partial Content", 300 => "HTTP/1.1 300 Multiple Choices", 301 => "HTTP/1.1 301 Moved Permanently", 302 => "HTTP/1.1 302 Found", 303 => "HTTP/1.1 303 See Other", 304 => "HTTP/1.1 304 Not Modified", 305 => "HTTP/1.1 305 Use Proxy", 307 => "HTTP/1.1 307 Temporary Redirect", 400 => "HTTP/1.1 400 Bad Request", 401 => "HTTP/1.1 401 Unauthorized", 402 => "HTTP/1.1 402 Payment Required", 403 => "HTTP/1.1 403 Forbidden", 404 => "HTTP/1.1 404 Not Found", 405 => "HTTP/1.1 405 Method Not Allowed", 406 => "HTTP/1.1 406 Not Acceptable", 407 => "HTTP/1.1 407 Proxy Authentication Required", 408 => "HTTP/1.1 408 Request Time-out", 409 => "HTTP/1.1 409 Conflict", 410 => "HTTP/1.1 410 Gone", 411 => "HTTP/1.1 411 Length Required", 412 => "HTTP/1.1 412 Precondition Failed", 413 => "HTTP/1.1 413 Request Entity Too Large", 414 => "HTTP/1.1 414 Request-URI Too Large", 415 => "HTTP/1.1 415 Unsupported Media Type", 416 => "HTTP/1.1 416 Requested range not satisfiable", 417 => "HTTP/1.1 417 Expectation Failed", 500 => "HTTP/1.1 500 Internal Server Error", 501 => "HTTP/1.1 501 Not Implemented", 502 => "HTTP/1.1 502 Bad Gateway", 503 => "HTTP/1.1 503 Service Unavailable", 504 => "HTTP/1.1 504 Gateway Time-out" ); header($http[$num]); } ?>
You can download this 404 error page example to play with.
How to generate a .htaccess and .htpasswd with PHP
Ever had a moment where you needed to secure a directory but didn't have the htpasswd tool available?
The following script simply generates a .htaccess and .htpasswd file to secure a directory.
<!DOCTYPE html> <html> <body> <?php if (!empty($_POST['username']) && !empty($_POST['password'])): ?> <strong>.htaccess</strong><br> <pre> AuthName "Members only" AuthType Basic AuthUserFile /srv/www/domain.tld/.htpasswd require valid-user </pre> Save the above file in the directory you want to secure.<br> <br> <strong>.htpasswd</strong><br> <pre> <?php echo $_POST['username'] . ':' . crypt($_POST['password'], base64_encode($_POST['password'])); ?> </pre> Save the above file as <strong>/srv/www/domain.tld/.htpasswd</strong>.<br> <br> <a href="<?php echo $_SERVER['PHP_SELF']; ?>">« BACK «</a> <?php else: ?> <form method="post"> Username: <input type="text" name="username"><br> Password: <input type="text" name="password"><br> <input type="submit"> </form> </form> <?php endif; ?> </body> </html>
How to force your visitors to goto your website domain without www as a prefix with mod_rewrite in Apache
Actually this is quite simple, you need to create a .htaccess file into your public_html / httpdocs directory and add the following piece of code:
Force non-www
# Force non-www RewriteEngine On RewriteCond %{HTTP_HOST} !^kitara.nl RewriteRule (.*) http://kitara.nl/$1 [R=301,L]
Force www
# Force www RewriteCond %{HTTP_HOST} !^www.kitara.nl RewriteRule (.*) http://www.kitara.nl/$1 [R=301,L]
Of course you need to modify this to match your own domain name
How to limit the bandwidth of Apache with mod_bw on FreeBSD
First you have to install mod_bw:
cd /usr/ports/www/mod_bw make install
Then open your httpd.conf and locate
#LoadModule bw_module libexec/apache22/mod_bw.soRemove the comment like this:
LoadModule bw_module libexec/apache22/mod_bw.so
Then you can add the following to your VirtualHost or global configuration to limit a directory speed, in my case I want to limit the band files where we host our demo materials width a limit of 50kb/s.
1 2 3 4 5 6 7 | <directory /home/mariusvw/public_html/band> <ifmodule mod_bw.c> BandWidthModule On ForceBandWidthModule On Bandwidth all 50000 </ifmodule> </directory> |
This is an example how you can globally limit all the traffic of your Apache installation.
1 2 3 4 5 | <ifmodule mod_bw.c> BandWidthModule On ForceBandWidthModule On Bandwidth all 50000 </ifmodule> |
For more info on this you can open the readme, which is located at:
/usr/local/share/doc/mod_bw/mod_bw.txt




