# Basics # Install Apache ubuntu ```sudo apt install apache2``` # Enable Apache Service sudo systemctl enable apache2 # View apache version and parameters ## location of configuration file apachectl -V httpd -V #Old apache ## Full List of apache configuration cmd $apachectl -t -D DUMP_INCLUDES # Start Apache sudo systemctl start apache2 # Restart apache linux service apache2 restart sudo /etc/init.d/apache2 restart # Configuration path /etc/apache2/sites-available/default /etc/apache2/httpd.conf /etc/apache2/apache2.conf /etc/httpd/httpd.conf /etc/httpd/conf/httpd.conf # Log File /var/log/apache2/error.log # Enable mod rewrite enable a2enmod rewrite # View Modules sudo apache2ctl -M # Include files from configuration file Include "/etc/apache2/conf.d/*.conf" #default welcome + keep this conf before other conf so this can be loaded as default host + useful for many virtualhosts + open a default page when ip address/misconfigured virtual host is entered + dont open another default website + or just throw error page ``` xml #<VirtualHost *:443> # DocumentRoot C:/xampp/htdocs/default_welcome/ # ErrorDocument 404 /index.html # # SSLEngine on # SSLCertificateFile c:/xampp/apache/conf/ssl/example.hostname.com/certificate.crt # SSLCertificateKeyFile C:/xampp/apache/conf/ssl/example.hostname.com/private.key #</VirtualHost> #<VirtualHost *:80> # ErrorDocument 404 /index.html # DocumentRoot C:/xampp/htdocs/default_welcome/ #</VirtualHost> ``` # Dont allow directory indexing ## conf file ``` Change Options Indexes FollowSymLinks to Options FollowSymLinks <Directory "{DOCUMENTPATH}/"> AllowOverride All Options FollowSymLinks </Directory> ``` ## .htaccess Options -Indexes # Dont allow access to folder files ##.htaccess Deny from all # .htaccess Redirect #301 permanent redir, 302 temporary redirect Redirect 301 /main.html /test1/index.html ErrorDocument 404 /404.htm #Rewrite Rule Options +FollowSymLinks RewriteEngine On RewriteRule ^empty.html$ http://www.google.com/ [R=301] #^empty.html$ Regular expression to redirect RewriteRule ^(.*)\.html$ $1.php [NC] #Rewrite .html to .php #[NC] no case upper/lower case #[R,NC] temporary redirect RewriteRule ^files/([^/]+)/([^/]+).zip /download.php?section=$1&file=$2 [NC] #http://example.com/files/games/mygame.zip changed to RewriteRule ^(newspaper|magazine|site)/([^/.]+)/([^/.]+)$ edit.php?category=$1§ion=$2&detail=$3 #http://example.com/newspaper/sports/tennis changed to RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L] # %{HTTP_HOST} starts with www #RewriteRule, will be evaluated as the # same address (parameter %1) and the same page (parameter $1). # Uses of Mod-Rewrite Protect your site from hotlinking and leeching images Redirect nonexisting pages to your main site address Use multiple domains in one root Automatic translation of pages Set up cookies and use them later for authentication purposes Prevent user agents (bots) from eating bandwidth on your site # Deny From ip order deny,allow # Denies all IP's Deny from all # This will allow the IP 192.0.2.9 allow from 192.0.2.9 # This will allow all IP's from 192.0.2.0 through 192.0.2.255 allow from 192.0.2 # Enable .htaccess overrides: <Directory /var/www/html/public/> Options Indexes FollowSymLinks AllowOverride All #AllowOverride All Require all granted </Directory> # Ref https://lowendbox.com/blog/setup-and-configure-mod_rewrite/