./configure --prefix=/srv/www --enable-access --enable-autoindex --enable-env --enable-info --enable-mime --enable-proxy --enable-status --enable-usertrack --enable-actions --enable-imap --enable-log_agent --enable-rewrite --enable-alias --enable-auth --enable-cgi --enable-dir --enable-include --enable-log_config --enable-mime_magic --enable-negotiation --enable-setenvif --enable-userdir --enable-define --enable-log_forensic --enable-ssl --enable-so --enable-dav
==== Dynamic DocumentRoot for Sub-Domains with RewriteEngine/RewriteCond/RewriteRule ====
ServerAlias www.yourdomain.com
ServerName www.yourdomain.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yourdomain.com
RewriteRule ^(.*)$ /www/$1 [L]
RewriteCond %{HTTP_HOST} ^www.*
RewriteRule ^(.*)$ /www/$1 [L]
RewriteCond %{HTTP_HOST} ^(.*)\.yourdomain\.com
RewriteRule ^(.*)$ /%1/$1 [L]
==== Broken Image rewrite ====
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(gif|jpg|png)$ http://www.xyz.com/images/broken_image.jpg [R=301,L]
==== mod_auth_mysql installation ====
/srv/www/apache/bin/apxs -c -L/usr/local/lib/mysql -I/usr/local/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
Following Error is showing up when you install it with \\
mod_auth_mysql.c:591: error: syntax error before “mysql_auth_config_rec”
http://sourceforge.net/tracker/index.php?func=detail&aid=1437139&group_id=60218&atid=493464
==== phpinfo() Based on Location ====
Alias /php-info /usr/local/apache/libexec/info.php
AuthUserFile /usr/local/apache/libexec/info.pw
AuthGroupFile /dev/null
AuthType Basic
AuthName "PHP Info"
require valid-user
==== Location Based Password ====
AuthUserFile /usr/local/www/statspass
AuthName "Stats Admin"
AuthType Basic
Require valid-user
==== Disable mod_security for specific folder using .htaccess ====
SecFilterEngine Off
SecFilterScanPOST Off
==== How to run php from cgi-bin folder ====
Action php-script /cgi-bin/php
AddHandler php-script .php
==== How to Disable Hotlinking using .htaccess ====
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?xyz\.com [NC] ## allow
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?pqr\.com [NC] ## allow
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?abc\.org [NC] ## allow
RewriteRule \.(gif|jpe?g|png|gif|bmp|jpe|mov|mpg|avi|mpeg|jpg)$ http://www.mnr.com [NC,L] ## Forward
== To enable some domain to hotlink on above list ==
if you define above .htaccess to all your domain at global position.\\
you might need to exclude some domain to allow hotlinking to it use following line after second line.\\
RewriteCond %{HTTP_HOST} !^www\.nmn\.com$ [NC]
==== Block IP using .htaccess ====
order allow,deny
allow from all
deny from .microsoft.com
deny from .evil-hackers.org
deny from 24.112.106.235
deny from morphine.wiretap.net
==== How to test mod_perl ===
#!/usr/local/bin/perl
$www = $ENV{'SERVER_PORT'} ne "";
eval "use Compress::Zlib"; $hasCompress = $@ ? 0 : 1;
eval "use LWP"; $hasLWP = $@ ? 0 : 1;
eval "use LWP::Simple"; $hasLWPsimple = $@ ? 0 : 1;
if ($hasLWPsimple) {
eval "use LWP::UserAgent";
my $ua = LWP::UserAgent->new(timeout => 30);
$u = "http://www.c3scripts.com/test/test.txt";
$resp = $ua->request(HTTP::Request->new('GET', $u));
$okLWP = $resp->content =~ /test\.pl/i;
}
eval "use CGI::Carp qw(fatalsToBrowser)"; $hasCGI = $@ ? 0 : 1;
$w = 16; $f = "%" . $w . "s : %s\n"; $f2 = " " x $w . " & %s\n";
print "Content-type: text/html\n\n" if ($www);
printf $f, "test.pl", "v6.01.18";
printf $f, "Perl", "v$]";
printf $f, "CGI::Carp", ($hasCGI? "" : "not ") . "installed";
printf $f, "Compress::Zlib", ($hasCompress? "" : "not ") . "installed";
printf $f, "LWP", ($hasLWP? "v$LWP::VERSION " : "not ") . "installed";
printf $f, "LWP::Simple", ($hasLWPsimple? "" : "not ") . "installed";
printf $f, "LWP::Simple", "rx " . ($okLWP? "" : "not ") . "ok" if ($hasLWPsimple);
printf $f, "\@INC", $INC[0]; foreach $x (1..$#INC) { printf $f2, $INC[$x];}
foreach $x (sort split(",",
"DOCUMENT_ROOT,SCRIPT_FILENAME,PATH_INFO,PATH_TRANSLATED,".
"REQUEST_FILENAME,HTTP_HOST,SERVER_SOFTWARE"))
{ printf $f, $x, $ENV{$x} }
print "
\n" if ($www);
1;
==== Setting Timezone using .htaccess ====
you can setup timezone using setting environment using TZ.
SetEnv TZ Europe/London
==== Setup Server admin email using .htaccess ====
To setup default notification email, you can also set based on directory.
ServerSignature EMail
SetEnv SERVER_ADMIN user@domainname.com
==== Block request based on User Agent ====
There is two way to accomplish this task.
SetEnvIfNoCase User-Agent "^libwww-perl" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot
SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot
SetEnvIfNoCase User-Agent "^Teleport" bad_bot
SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot
SetEnvIfNoCase User-Agent "^Mozilla/4\.0\ \(compatible\)$" bad_bot
Order Allow,Deny
Allow from all
Deny from env=bad_bot
OR
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^libwww-perl [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4\.0\ \(compatible\) [OR]
RewriteRule ^.* - [F,L]
==== How to prevent asking for download files ====
This will not ask you to download files.
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
==== Redirect Non-www to www domain ====
This is useful in may stats.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
==== Redirect www to Non-www ====
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
==== Redirect if HTTP_HOST not match ====
This help you to prevent IP pointing and help gaining ranking.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(.*)\.domain\.com
RewriteRule (.*) http://www.google.com/search?hl=en&site=domain.com&q=domain.com&btnG=Search [R=301,L]
==== flv streaming + mp4 streaming with lighttpd proxy ====
ProxyRequests Off
ProxyPass /video http://127.0.0.1:81/
ProxyPassReverse / http://127.0.0.1:81/
In light httpd simply follow the configuration as usual.
OR
Check link [[lightttpd]]
==== Redirect you can use with apache / lighttpd to content ====
RewriteEngine On
RewriteRule ^(.*)\.(mp3|mov|mp4)$ http://www.xyz.com:81/Videos/$1.$2 [NC]
==== Redirect mobile browser ====
This will help to redirect all mobile devices to specific page.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (mobile|android|blackberry|brew|htc|j2me|lg|midp|mot|motorola|netfront|nokia|obigo|openweb|opera.mini|palm|psp|samsung|sanyo|sch|sonyericsson|symbian|symbos|teleca|up.browser|vodafone|wap|webos|windows.ce) [NC]
RewriteRule ^(.*)$ http://ketan.lithiumfox.com/doku.php?do=search&id=htaccess [R=303,L]
Why 303 :
The response to the request can be found under another URI using a GET method. When received in response to a PUT,\\
it should be assumed that the server has received the data and the redirect should be issued with a separate GET message.
==== Disable Trace / track ====
Mostly trace / track is risk to apache server.\\
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]