Tεχνικές και μυστικά για χρήσιμο htaccess

Έχω συλλέξει 17 μεθόδους σε αυτό το άρθρο που έχω χρησιμοποιήσει ή έχω δοκιμάσει, και θεωρώ πως μερικά από αυτά είναι ουσιώδη μυστικά που σας βοηθούν να προστατεύσετε των web server σας από επιθέσεις, ενώ κάποια άλλα είναι απλά τεχνικές που βελτιώνουν ή υποβοηθούν των διακομιστή σας.
Γενικά
Τα ακόλουθα htaccess θα σας επιτρέψουν να κάνετε απλές εργασίες όπως για παράδειγμα
ανά-κατευθύνσεις και βελτιστοποίηση του web server σας.
1. Ορισμός ζώνης ώρας
Μερικές φορές όταν χρησιμοποιείτε συναρτήσεις όπως είναι η date ή η συνάρτηση mktime στην
PHP μπορεί να δείτε ένα μήνυμα προειδοποίησης από το server σχετικά με τη ζώνη ώρας.
Ακολουθεί ο κώδικας που θα σας επιτρέψει να λύσετε το πρόβλημα σας.
Ορίστε μόνοι σας την ζώνη ώρας του server σας.
Μια λίστα με όλες τις διαθέσιμες ζώνες ώρας μπορεί να βρεθεί και εδώ
SetEnv TZ Europe/Athens
2. Φιλική προς το SEO μόνιμη ανακατεύθυνση 301
Για ποιο λόγο είναι φιλική η ανακατεύθυνση 301 για το SEO; Στις ημέρες μας, μερικές
μοντέρνες μηχανές αναζήτησης όπως είναι το Google, το Yahoo, το BIND και άλλες
μπορούν να αντιληφθούν τις ανά-κατευθύνσεις και έτσι ενημερώνουν τους
καταλόγους τους για αυτές τις αλλαγές.
Redirect 301 http://www.web-resources.eu/home http://www.web-resources.eu
3. Παράκαμψη του διαλόγου Download
Συνήθως όταν προσπαθείτε να κατεβάσετε κάτι από ένα web server αντιμετωπίζετε
το διάλογο του περιηγητή διαδικτύου που σας ρωτά αν θέλετε να αποθηκεύσετε ή
να ανοίξετε το αρχείο που κατεβάζετε. Για να απαλλάξετε τους χρήστες σας από
αυτή τη διαδικασία μπορείτε να χρησιμοποιήσετε των κώδικα που ακολουθεί.
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
4. Παράκαμψη του www
Ένας από τους βασικούς κανόνες του SEO είναι να έχετε μόνο ένα URL που να δείχνει
στην ιστοσελίδα σας. Ένας τρόπος για να το κάνετε είναι είτε να υποχρεώσετε όποια
αίτηση έρχεται στον web server σας χωρίς www να την ανακατευθύνετε σε αυτή με το
www ή το ανάστροφο.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.queness.com [NC]
RewriteRule ^(.*)$ http://queness.com/$1 [L,R=301]
5. Προσαρμοσμένες σελίδες σφαλμάτων
Δημιουργήστε της δικές σας σελίδες σφάλματος για κάθε τύπο σφάλματος
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
6. Συμπίεση αρχείων
Βελτιώστε την απόδοση του web server σας απλά μειώνοντας το μέγεθος των αρχείων
με συμπίεση
# συμπίεση αρχείων text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
7. Διατηρήστε τα αρχεία σας στην Cache
Η διατήρηση του στατικού περιεχομένου της σελίδας σας στην Cache των περιηγητών
διαδικτύου των επισκεπτών της ιστοσελίδας σας βελτιώνει την απόδοση του web site σας.

Header set Cache-Control “max-age=2592000”
8. Απενεργοποίηση της Cache για συγκεκριμένα αρχεία
Από την άλλη πλευρά μπορείτε να απενεργοποιήσετε συγκεκριμένους τύπους αρχείων
ώστε να μην διατηρούνται στην Cache
# αναγκαστική απενεργοποίηση της Cache για σενάρια εντολών και άλλα δυναμικά αρχεία

Header unset Cache-Control
Ασφάλεια
Με τα ακόλουθα htaccess θα μπορέσετε να βελτιώσετε το επίπεδο ασφάλειας του web server σας.
Εδώ θα βρείτε κώδικα για να διακόψετε για παράδειγμα το hotlink των εικόνων σας.
1. Προστασία από το hotlink
Σας εκνευρίζει η κατάχρηση του bandwidth του web server σας, όταν οι άλλοι χρησιμοποιούν
εικόνες από εσάς. Με τη χρήση του παρακάτω κώδικα θα τους απαγορεύσετε τη χρήση εικόνων
από τη σελίδα σας.
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?queness.com/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
2. Αποφυγή των Hacks
Αν θέλετε να βελτιώσετε το επίπεδο ασφαλείας του Web server σας, χρησιμοποιήστε τις ακόλουθες
γραμμές κώδικα που μπλοκάρουν κάποιες κοινές τεχνικές επίθεσης με τον εντοπισμό ειδικών
εντολών στο URL
RewriteEngine On

# proc/self/environ; Με τίποτα!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να ορίσει τιμή στο mosConfig μέσω κάποιου URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να παραβιάσει το site σας με αποστολή κωδικοποιημένων εντολών se base64_encode μέσω URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

# Αποκλεισμός κάθε σεναρίου που περιέχει την ετικέτα στο URL
RewriteCond %{QUERY_STRING} (|%3E) [NC,OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να αλλάξει τις μεταβλητές PHP GLOBALS μέσω κάποιου URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]

# Αποκλεισμός κάθε σεναρίου που προσπαθεί να αλλάξει τις μεταβλητές _REQUEST μέσω κάποιου URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})

# Ανά-κατεύθυνση κάθε αποκλεισμένης αίτησης στην αρχική σελίδα με κωδικό σφάλματος 403
RewriteRule ^(.*)$ index.php [F,L]

3. Προστασία του αρχείου .htaccess

Ο κώδικας που ακολουθεί θα απαγορεύσει την πρόσβαση στο αρχείο .htaccess

# Αποκλεισμός πρόσβασης στο htaccess

order allow,deny
deny from all

# Αποκλεισμός πρόσβασης σε συγκεκριμένο αρχείο

 order allow,deny
 deny from all

# Αποκλεισμός πολλαπλών τύπων αρχείων

 Order Allow,Deny
 Deny from all

4. Αλλάξτε όνομα στο .htaccess

Ακόμα ένας τρόπος για να προστατεύσετε το htaccess σας από την πρόσβαση τρίτων είναι η μετονομασία του σε κάτι άλλο.

AccessFileName htacce.ss

5. Απενεργοποιήστε την πλοήγηση στο σύστημα αρχείων του web server σας

Διακόψτε ή επιτρέψτε την πλοήγηση στο σύστημα αρχείων του web server σας με τον ακόλουθο κώδικα.

# Απαγόρευση περιήγησης στους καταλόγους
Options All -Indexes
# Δικαίωμα περιήγησης στους καταλόγους
Options All +Indexes

6. Αλλάξτε την προεπιλεγμένη index σελίδα

Αν θέλετε μπορείτε να αλλάξετε την προεπιλεγμένη σελίδα index.html ή index.php σε ότι άλλο θέλετε εσείς

DirectoryIndex business.html

7. Απαγόρευση πρόσβασης σε κίνηση από συγκεκριμένο web site

# Αποκλεισμός επισκεπτών που έρχονται από συγκεκριμένο web site

 RewriteEngine on
 RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
 RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
 RewriteRule .* - [F]

8. Απαγόρευση πρόσβασης σε συγκεκριμένους User-Agent

Αυτός ο κώδικας μπορεί να σας εξοικονομήσει bandwidth απαγορεύοντας την πρόσβαση σε bots ή spiders που σαρώνουν τη σελίδα σας και δεν τα θέλετε.

# Αποκλεισμός συγκεκριμένων User-Agent

SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT

9. Προστασία καταλόγων με απαγόρευση εκτέλεσης σεναρίων

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI