Htaccess - Χρήση και σύνταξη. Πρακτικές λύσεις για τη χρήση του αρχείου .htaccess

Ας ξεκινήσουμε από μακριά, ώστε οι αρχάριοι να κατανοήσουν την αρχή λειτουργίας του αρχείου που περιγράφεται στο άρθρο. Για να λειτουργήσετε έναν ιστότοπο στο Διαδίκτυο, χρειάζεστε όχι μόνο έναν υπολογιστή και πρόσβαση στο δίκτυο, αλλά και ειδικό λογισμικό εγκατεστημένο σε αυτόν που παρέχει πρόσβαση σε δεδομένα μέσω των πρωτοκόλλων http και https. Ένα τέτοιο λογισμικό είναι ένας διακομιστής ιστού. Υπάρχουν διάφοροι τύποι διακομιστών Ιστού, αλλά ο πιο συνηθισμένος είναι ο Apache. Είναι χτισμένο σε ανοιχτό κώδικα, παρέχεται δωρεάν, αναπτύσσεται και βελτιώνεται συνεχώς, είναι συμβατό με πολλά σενάρια και τρέχει σχεδόν σε όλες τις πλατφόρμες, συμπεριλαμβανομένων των Windows, Linux, Netware 5.x.

Το Apache διαμορφώνεται μέσω αρχείων διαμόρφωσης, τα οποία αποθηκεύονται σε μορφή κειμένου. Με τη βοήθειά τους, μπορείτε να ορίσετε ορισμένους κανόνες για τη λειτουργία του διακομιστή web. Καλείται το κύριο αρχείο ρυθμίσεων httpd.confή apache.conf(ανάλογα με τη διανομή του λειτουργικού συστήματος). Σε πολλές περιπτώσεις, όλες οι διαμορφώσεις διακομιστή μπορούν να καθοριστούν εδώ και γενικά αυτή η μέθοδος είναι προτιμότερη επειδή:

Α) μειώνει τον χρόνο απόκρισης του διακομιστή ιστού κατά το αίτημα (έτσι κάθε φορά που ο Apache αποκτά πρόσβαση στον διακομιστή ιστού, δεν θα σαρώνει όλους τους καταλόγους για την παρουσία .htaccess). β) ορισμένες οδηγίες, όπως οι οδηγίες module mod_rewrite, λειτουργούν καλύτερα με πολλούς τρόπους από το κύριο αρχείο διαμόρφωσης.

Ωστόσο, μπορεί να μην έχουν όλοι οι χρήστες διακομιστή πρόσβαση σε αυτό το αρχείο (για παράδειγμα, στην περίπτωση εικονικής φιλοξενίας), επομένως σε άλλους προσφέρεται ένα πρόσθετο αρχείο διαμόρφωσης διακομιστή ιστού - .htaccess(με τελεία στην αρχή του ονόματος).

Τι είναι το .htaccess και σε τι χρησιμεύει;

Το αρχείο (ή τα αρχεία) .htaccess θα καθορίσει τους κανόνες για τη λειτουργία του διακομιστή web μόνο στον κατάλογο όπου βρίσκεται και στους θυγατρικούς καταλόγους του, χωρίς να πραγματοποιούνται γενικές αλλαγές στη λειτουργία ολόκληρου του διακομιστή. Η δυνατότητα χρήσης .htaccess ορίζεται από μια οδηγία (δηλαδή εντολή) - AllowOverride- στο κύριο αρχείο διαμόρφωσης httpd.conf, το όνομα του οποίου υποδεικνύει άμεσα ότι οι ρυθμίσεις στο .htaccess υπερισχύουν των ρυθμίσεων στο httpd.conf (εκτός εάν περιορίζεται διαφορετικά από την ίδια οδηγία AllowOverride). Χρησιμοποιώντας αυτήν την οδηγία, μπορείτε να επιτρέψετε τα πάντα ή μόνο ορισμένες ενέργειες. Αναλυτικές οδηγίες για τη χρήση του μπορείτε να βρείτε στον ιστότοπο του Apache.

Με αυτό, κάθε φορά που αποκτάτε πρόσβαση στον διακομιστή ιστού, ο Apache θα σαρώνει όλους τους καταλόγους για την παρουσία .htaccess. Οι αλλαγές στο αρχείο ισχύουν αμέσως μετά την αποθήκευση - δεν υπάρχει ανάγκη επανεκκίνησης ολόκληρου του διακομιστή web (σε αντίθεση με τις αλλαγές στο httpd.conf).

Το όνομα αρχείου .htaccess είναι κοινό, αλλά δεν απαιτείται. Στο httpd.conf μπορείτε να ορίσετε διαφορετικό όνομα χρησιμοποιώντας την οδηγία AccessFileName, για παράδειγμα, όπως αυτό:

AccessFileName.config

Πώς να δημιουργήσετε ένα αρχείο .htaccess

Όπως αναφέρθηκε ήδη, τα αρχεία διαμόρφωσης είναι σε μορφή κειμένου και μπορείτε επίσης να δημιουργήσετε .htaccess χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου (για παράδειγμα, Σημειωματάριο ή NotePad++ στα Windows).

Το όνομα του αρχείου είναι .htaccess (με μια τελεία στην αρχή).

τύπος - "Όλα τα αρχεία";

μορφή αναδίπλωσης λέξης?

Λειτουργία ASCII (κατά τη μεταφόρτωση .htaccess στη φιλοξενία μέσω πρωτοκόλλου FTP).

Ο Apache είναι ένας διακομιστής web με διάκριση πεζών-κεφαλαίων, επομένως είναι σημαντικό να γράψετε το όνομα με μικρά γράμματα: Το .HTaccess και το .htaccess είναι διαφορετικά αρχεία.

Σε Mac OS, τα αρχεία που ξεκινούν με μια τελεία είναι αόρατα. Επομένως, μπορείτε να το ονομάσετε διαφορετικά και στη συνέχεια να το μετακινήσετε μέσω FTP στη φιλοξενία και να το μετονομάσετε. Συνήθως το αρχείο τοποθετείται στον ριζικό κατάλογο του διακομιστή web ( /public_html) ή στον ριζικό κατάλογο του ιστότοπου ( /public_html/site.com/).

Syntax.htaccess

Η σύνταξη του .htaccess είναι παρόμοια με αυτή του httpd. Κάθε οδηγία υποτίθεται ότι έχει τη δική της γραμμή. Για τη δική σας διευκόλυνση, μπορείτε να προσθέσετε σχόλια στο αρχείο χρησιμοποιώντας το σύμβολο # και η τιμή μετά το # θα αγνοηθεί από τον διακομιστή web. Αυτό το τέχνασμα μπορεί να χρησιμοποιηθεί για να απενεργοποιήσετε οποιαδήποτε οδηγία. Δεν χρειάζεται να το αφαιρέσετε εντελώς από το αρχείο - απλώς σχολιάστε το.

Οι δυνατότητες του αρχείου διαμόρφωσης είναι τεράστιες. Παρακάτω είναι οι βασικές ρυθμίσεις στο .htaccess.

Features.htaccess

Έλεγχος πρόσβασης

Απαγόρευση πρόσβασης στον ιστό:

Order Deny, Allow Deny από όλους

Απαγόρευση πρόσβασης στον ιστό εκτός από IP:

Απόρριψη παραγγελίας, αποδοχή άρνησης από όλα τα επιτρεπόμενα από xxx.xxx.xxx.xxx

Απαγόρευση πρόσβασης στον ιστό για IP:

Παραγγελία επιτρέπεται, άρνηση Επιτρέπεται από όλα Άρνηση από xxx.xxx.xxx.xxx

Άρνηση πρόσβασης σε αρχείο:

Παραγγείλετε να επιτρέπεται, αρνηθείτε την άρνηση από όλους

Προστασία του καταλόγου με κωδικό πρόσβασης:

AuthType Basic AuthName "Directory Name" Το AuthUserFile /home/cpanel_user/.htpasswds/public_html/smth/passwd απαιτεί valid-user # όπου το AuthName "Directory Name είναι το όνομα του προστατευμένου καταλόγου και το #/passwds_html/public. /smth/ passwd - θέση του αρχείου κωδικού πρόσβασης.

Αντιμετώπιση σφαλμάτων διακομιστή ιστού

Μερικές φορές, αντί για την αναμενόμενη σελίδα, ένας επισκέπτης μπορεί να αντιμετωπίσει μια απάντηση από τον διακομιστή ιστού με τη μορφή σφάλματος με μια λακωνική, αλλά όχι πάντα σαφή για τον μέσο χρήστη, εξήγηση του λόγου. Μπορείτε να βρείτε μια πλήρη λίστα με τους κωδικούς κατάστασης στη Wikipedia. Για τα πιο συνηθισμένα (για παράδειγμα, σφάλματα 404 ή 500), συνιστάται να δημιουργήσετε τη δική σας σελίδα που να φαίνεται καλύτερα και να παρουσιάζει τη διαδρομή εξόδου στον επισκέπτη. Ορίζεται ως εξής:

ErrorDocument 404 http://yourdomain.com/error/404.html # όπου http://yourdomain.com/error/404.html είναι η διαδρομή προς τη σελίδα που δημιουργήθηκε.

ΥΣΤΕΡΟΓΡΑΦΟ.Οι χρήστες της υπηρεσίας από τον ιστότοπο μπορούν να χρησιμοποιήσουν τη λειτουργικότητα του πίνακα ελέγχου cPanel για να δημιουργήσουν τη σελίδα τους (στην ενότητα « Προχωρημένος" παράγραφος " Σελίδες σφαλμάτων”).

Ρύθμιση ανακατεύθυνσης 301 στο htaccess

Για να δημιουργήσετε μια μόνιμη ανακατεύθυνση, χρησιμοποιείται μια οδηγία ανακατεύθυνσης 301, η οποία μεταφέρει ολόκληρο το βάρος της σελίδας στη νέα διεύθυνση url (γι' αυτό είναι προτιμότερο από μια ανακατεύθυνση 302 για λόγους SEO).

Ανακατεύθυνση ολόκληρου του ιστότοπου σε νέο τομέα:

Ανακατεύθυνση 301 / http://www.newdomain.com/

Ανακατεύθυνση σελίδας σε νέα:

Ανακατεύθυνση 301 /page1.html http://mydomain.com/page2.html

Μονάδα επανεγγραφής Mod

Ένας απαραίτητος μηχανισμός για την άμεση αλλαγή συνδέσμων URL είναι η ενότητα mod_rewrite. Η χρησιμότητά του, αλλά και η πολυπλοκότητά του, έγκειται στο γεγονός ότι μπορούν να χρησιμοποιηθούν μυριάδες κανόνες, συμπεριλαμβανομένων ακόμη περισσότερων μεταβλητών.

Για να λειτουργήσει η ενότητα, πρώτα απ 'όλα χρειάζονται οδηγίες

RewriteEngine On(περιλαμβάνει τη λειτουργία του μηχανισμού μετατροπής)

Επιλογές FollowSymLinks(προϋπόθεση για να λειτουργήσει το mod_rewrite).

Εάν ο διαχειριστής του διακομιστή έχει απενεργοποιήσει αυτήν την επιλογή για τον κατάλογο χρήστη, τότε δεν μπορεί να χρησιμοποιηθεί ο μηχανισμός μετατροπής. Αυτός ο περιορισμός επιβάλλεται σε διακομιστές εικονικής φιλοξενίας για λόγους ασφαλείας.

RewriteRule

Μία από τις πιο λειτουργικές οδηγίες της ενότητας mod_rewrite είναι RewriteRule. Για να προσδιοριστεί η συνθήκη υπό την οποία θα λειτουργεί ο κανόνας, χρησιμοποιείται η οδηγία RewriteCond. Πρέπει να γραφτεί (ένα ή περισσότερα) πριν από το RewriteRule.

Ανακατεύθυνση σελίδας σε νέο τομέα:

RewriteRule ^page1\.html$ http://newdomain.com/

Ανακατεύθυνση ιστότοπου από τομέα χωρίς www σε τομέα με www:

RewriteEngine On RewriteCond %(HTTP_HOST) !^www\..* RewriteRule ^(.*) http://www.%(HTTP_HOST)/$1

Και αντίστροφα:

RewriteCond %(HTTP_HOST) ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1

Ανακατεύθυνση μέσω πρωτοκόλλου HTTPS (πρέπει να εγκατασταθεί πρώτα):

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

Αυτές οι γραμμές πρέπει να τοποθετηθούν στην κορυφή του .htaccess.

Ορισμός κωδικοποίησης

Ο πίνακας χαρακτήρων στον οποίο πρέπει να ανοίξει ο ιστότοπος καθορίζεται από το πρόγραμμα περιήγησης. Ωστόσο, μπορείτε να ορίσετε την προεπιλεγμένη κωδικοποίηση:

AddDefaultCharset UTF-8

Μια τέτοια αλλαγή ισχύει για την ενέργεια .htaccess και για όλες τις σελίδες του ιστότοπου. Μπορείτε να ορίσετε την κωδικοποίηση για έναν συγκεκριμένο τύπο αρχείου, για παράδειγμα windows-1251για html:

AddType "application/x-httpd-php3; charset=windows-1251" .html

Συχνά η ίδια η σελίδα περιέχει (δηλαδή στην κεφαλίδα) πληροφορίες σχετικά με την κωδικοποίηση που χρησιμοποιείται. Πρέπει να ελέγξετε ότι η καθορισμένη κωδικοποίηση στο έγγραφο και στο αρχείο διαμόρφωσης ταιριάζει. Το utf-8 που δίνεται εδώ απαιτείται σχεδόν πάντα όταν εργάζεστε με δημοφιλή cms, καθώς έχουν σχεδιαστεί για μεγάλο αριθμό χρηστών σε όλο τον κόσμο. Παρεμπιπτόντως, από προεπιλογή η ίδια κωδικοποίηση έχει ρυθμιστεί στους διακομιστές εικονικής φιλοξενίας μας.

Αλλες επιλογές

— Προσδιορίστε το αρχείο ευρετηρίου τοποθεσίας:

Από προεπιλογή, λαμβάνεται υπόψη η σελίδα ευρετηρίου index.html. Χρησιμοποιώντας την ακόλουθη οδηγία, μπορείτε να καθορίσετε ένα διαφορετικό όνομα για το αρχείο που αποκόπτεται πρώτα κατά την πρόσβαση σε έναν κατάλογο:

DirectoryIndex index.php

— Μια χρήσιμη οδηγία είναι το FilesMatch, το οποίο καθορίζει το εύρος ενός κανόνα ανά όνομα αρχείου χρησιμοποιώντας κανονικές εκφράσεις. Με τη βοήθειά του, για παράδειγμα, μπορείτε να αρνηθείτε την πρόσβαση σε ορισμένα αρχεία:

Παραγγελία Allow, Deny Deny από όλους

Υπάρχουν ορισμένες οδηγίες που δεν υποστηρίζονται στους κοινόχρηστους διακομιστές φιλοξενίας μας, αλλά μπορείτε να τις ενεργοποιήσετε στο VPS σας, για παράδειγμα.

Ο λόγος είναι ότι ο διακομιστής web που λειτουργεί ως suPHP δεν υποστηρίζει php_flagΚαι php_value. Επομένως, προτείνουμε να χρησιμοποιήσετε το cPanel (η υποενότητα " Επιλέγοντας την έκδοση PHP", για εργασία με error_log - " Αρχείο καταγραφής σφαλμάτων") ή δημιουργήστε ένα τοπικό αρχείο php.iniγια το σκοπό αυτό. Δώσαμε μερικές οδηγίες παρακάτω:

— Προκειμένου να αποφευχθεί το πάγωμα του διακομιστή web κατά την επεξεργασία λανθασμένων σεναρίων, υπάρχει max_execution_time. Με τη βοήθειά του, υποδεικνύεται ο χρόνος σε δευτερόλεπτα που διατίθεται για την επεξεργασία του σεναρίου PHP. Μπορείτε να αυξήσετε το χρονικό όριο λήξης του διακομιστή web κατά την εκτέλεση ενός σεναρίου:

Php_value max_execution_time 60

— Προσδιορίστε το μέγιστο μέγεθος του μεταφορτωμένου αρχείου:

Php_value upload_max_filesize 128M (εδώ αντικαταστήστε το 128 με την επιθυμητή τιμή).

— Εξαγωγή σφαλμάτων PHP σε ξεχωριστό αρχείο:

Php_flag log_errors στο php_value error_log /home/path/to/public_html/domain/PHP_errors.log # PHP_errors.log είναι το όνομα του αρχείου και # /home/path/to/public_html/domain είναι η διαδρομή προς αυτό).

ΥΣΤΕΡΟΓΡΑΦΟ.Στην κοινόχρηστη φιλοξενία, είναι δύσκολο να προσδιοριστεί με βεβαιότητα ποιες οδηγίες θα λειτουργούν στο .htaccess, επειδή πολλές από αυτές που οδηγούν σε αλλαγές στη διαμόρφωση του διακομιστή web απαγορεύονται για προφανείς λόγους - αυτές οι αλλαγές θα επηρεάσουν όλους τους χρήστες στον κεντρικό υπολογιστή.

Εάν το .htaccess δεν λειτουργεί

Μπορείτε να ελέγξετε τη λειτουργία του αρχείου γράφοντας απλές οδηγίες, οι οποίες, με τη σωστή σύνταξη και τις σωστές ρυθμίσεις httpd (όπως περιγράφονται στην αρχή του άρθρου), θα πρέπει να λειτουργούν:

- για παράδειγμα, με την απαγόρευση της πρόσβασης στον ιστότοπο από έξω χρησιμοποιώντας την οδηγία

Άρνηση παραγγελίας, επιτρέψτε την άρνηση από όλους

- ή γράφοντας σε ένα αρχείο ένα σύνολο συμβόλων χωρίς νόημα που δεν είναι οδηγίες. Εάν ο διακομιστής ιστού αλληλεπιδράσει με το htaccess, τότε, φυσικά, δεν θα μπορεί να τα διαβάσει και θα δώσει ένα σφάλμα 500.

Εάν το πρόβλημα υπάρχει πραγματικά, πρέπει πρώτα να αναζητήσετε την αιτία στο κύριο αρχείο ρυθμίσεων:

— βεβαιωθείτε ότι ο διακομιστής επιτρέπει τη χρήση του αρχείου .htaccess: υπάρχει μια καταχώρηση Allow Override All(και δεν σχολιάζεται με #).

— ελέγξτε ότι έχει δημιουργηθεί μια εγγραφή VirtualHostγια τον τομέα. Ως παράδειγμα:

DocumentRoot /www/example1 Όνομα διακομιστή www.example.com # Άλλες οδηγίες

— το όνομα του πρόσθετου αρχείου διαμόρφωσης καθορίζεται όπως χρειάζεστε. Εάν αυτό είναι .htaccess, τότε:

AccessFileName.htaccess

— υπάρχει ένα όνομα κεντρικού υπολογιστή διακομιστή (που καθορίζεται κατά τη δημιουργία ανακατευθύνσεων URL) με τη μορφή διεύθυνσης IP διακομιστή ή τομέα:

Όνομα διακομιστή www.example.com

Εάν ο λόγος δεν είναι httpd, πρέπει να ελέγξετε το ίδιο το .htaccess για συντακτικά σφάλματα. Μπορείτε να χρησιμοποιήσετε διαδικτυακές υπηρεσίες (για παράδειγμα, http://www.htaccesscheck.com/, http://htaccess.madewithlove.be/) ή - όπου υπάρχει πλήρης λίστα οδηγιών, μαζί με τη σύνταξη.

Συνιστάται ιδιαίτερα να δημιουργήσετε ένα αντίγραφο ασφαλείας του αρχείου πριν από οποιαδήποτε επεξεργασία - έτσι ώστε αν συμβεί το χειρότερο, να μπορείτε να "επαναφέρετε" τις αλλαγές.

Αν και οι αλλαγές τίθενται σε ισχύ αμέσως, κανείς δεν έχει ακυρώσει την προσωρινή μνήμη του προγράμματος περιήγησης - για να ελέγξετε τη λειτουργία του ιστότοπου μετά την επεξεργασία του .htaccess, χρησιμοποιήστε τον τακτικά για να το καθαρίσετε ή να φορτώσετε τη σελίδα παρακάμπτοντας την προσωρινή μνήμη - χρησιμοποιώντας έναν συνδυασμό πλήκτρων Ctrl+F5(στο Safari: Ctrl+R, σε Mac OS: Cmd+R).

Το πιο συνηθισμένο σφάλμα διακομιστή web κατά την εργασία με .htaccess είναι 500 και είτε υποδεικνύει πρόβλημα στη σύνταξη (τυπογραφικό λάθος σε μια οδηγία, για παράδειγμα), είτε το κύριο αρχείο διαμόρφωσης δεν επιτρέπει αυτόν τον τύπο οδηγίας.

χρήσιμοι σύνδεσμοι

Η καλύτερη έμπνευση για να δουλέψετε με .htaccess:

Πολλές οδηγίες για την εργασία με .htacess είναι στα ρωσικά.

  • Φροντιστήριο

Η Google κατατάσσει τους ιστότοπους που φορτώνουν πιο γρήγορα. - Εάν το eBay ή το Amazone αυξήσουν τον χρόνο φόρτωσης της σελίδας κατά 9%, χάνουν το 1% του κέρδους. - Κάντε τον ιστότοπό σας πιο γρήγορο για εξοικονόμηση στην επισκεψιμότητα των πελατών και στον αριθμό των κλήσεων προς τον διακομιστή.

Το .htaccess είναι ο ήρωάς μας

Οι επαγγελματίες γνωρίζουν τι είναι το htaccess.
Όσοι σκοπεύουν να φύγουν από το Narod.ru για φιλοξενία PHP πρέπει απλώς να μάθουν τι είναι.
Όσοι έχουν μόλις εγκαταστήσει το πρώτο τους jooml ή wordpress θα πρέπει επειγόντως να μάθουν για τον ήρωά μας - htaccess

Γιατί χρειαζόμαστε .htaccess;

Φανταστείτε ότι αγοράσατε τον εαυτό σας φιλοξενία και φαίνεται ότι έχετε σχεδόν βρει την ευτυχία. Αλλά μια μέρα (ή ίσως δύο, ίσως τρεις φορές) ο ιστότοπός σας σταματά να ανταποκρίνεται. Αρχίζει να φορτώνει αργά και γενικά να συμπεριφέρεται περίεργα. Και η εικονική φιλοξενία είναι τόσο δύσκολο πράγμα που εκτός από τον ιστότοπό σας, υπάρχουν δύο δωδεκάδες άλλοι ιστότοποι σε αυτόν τον διακομιστή. Διαφέρουν όλοι σε δύναμη, οργάνωση και κίνηση. Και όταν ο γείτονάς σας, κατά λάθος, ή ίσως επίτηδες, εκτοξεύει πολύπλοκα ή περιττά σενάρια στη φιλοξενία του, αυτό επηρεάζει και εσάς.

Ή άλλο παράδειγμα. Ας υποθέσουμε ότι ο πόρος σας αρχίζει να κερδίζει δημοτικότητα, αλλά είναι πολύ νωρίς για να μετακινηθείτε σε έναν αποκλειστικό διακομιστή και η χωρητικότητα VPS δεν είναι πλέον αρκετή. Το htaccess μπορεί πραγματικά να σας βοηθήσει.

Και το htaccess μπορεί επίσης να λύσει ορισμένα ζητήματα ασφάλειας για τον ιστότοπό σας.

Θέλω το τέλειο .htaccess!

Αποδεικνύεται ότι υπάρχουν πολλές διαφορετικές αντικρουόμενες πληροφορίες στο Διαδίκτυο σχετικά με τον τρόπο χρήσης του .htaccess. Έπρεπε να πειραματιστώ πολύ και κουραστικά για να καταλάβω τι είναι αλήθεια και τι ψέμα. Στις περισσότερες περιπτώσεις, οι συντάκτες των συμβουλών στα ιστολόγιά τους ξεχνούν να αναφέρουν ότι για να λειτουργήσουν ορισμένες συνθήκες, απαιτείται μία ή άλλη μονάδα Apache.
Ωστόσο, αρκετά λόγια, ήρθε η ώρα να ασχοληθείτε. Ας προσπαθήσουμε να δημιουργήσουμε ένα σχεδόν τέλειο .htaccess

1. Η πρώτη γραμμή ορίζει τις κύριες επιλογές:


Η χρήση επιλογών είναι πολύ βολική όταν δεν έχετε πρόσβαση στη διαμόρφωση του Apache ή χρειάζεστε διαφορετικές ρυθμίσεις Apache για διαφορετικούς ιστότοπους στον ίδιο διακομιστή.

Η επιλογή -ExecCGI αποτρέπει την εκτέλεση σεναρίων CGI. Είναι καλύτερα να το επιτρέπετε μόνο για συγκεκριμένους φακέλους. Θα αυξήσει την ασφάλεια.
Η επιλογή -Indexes αποτρέπει την εμφάνιση των περιεχομένων των καταλόγων εάν δεν περιέχουν αρχείο ευρετηρίου. Στην κοινόχρηστη φιλοξενία είναι συνήθως ενεργοποιημένη από προεπιλογή. Αλλάζοντας το μείον σε συν + Ευρετήρια, μπορείτε, αντίθετα, να επιτρέψετε την προβολή των περιεχομένων του καταλόγου (ή των καταλόγων).
Η επιλογή -Includes απενεργοποιεί το SSI. Εάν δεν γνωρίζετε τι είναι, απαγορεύστε το (Μπορείτε να το Yandex(!) κατόπιν αιτήματος του Server Side Include αν θέλετε να μάθετε περισσότερα σχετικά με αυτό). Μπορείτε να χρησιμοποιήσετε την επιλογή IncludesNOEXEC, η οποία θα επιτρέψει τη χρήση του SSI χωρίς εκτέλεση σεναρίων.
Η επιλογή +FollowSymLinks σάς επιτρέπει να χρησιμοποιείτε συμβολικούς συνδέσμους σε αρχεία ή καταλόγους που δεν βρίσκονται στη ρίζα του ιστότοπού σας.

Σημείωση

Μπορείτε να χρησιμοποιήσετε το htaccess με διαφορετικές ρυθμίσεις για διαφορετικούς καταλόγους. Στη ρίζα του ιστότοπου μπορείτε να δηλώσετε -Indexes, και σε επιλεγμένους καταλόγους να δημιουργήσετε ένα άλλο αρχείο .htaccess και να δηλώσετε +Indexes σε αυτό. Να θυμάστε ότι το εφέ των επιλογών htaccess διαδίδεται από πάνω προς τα κάτω του δέντρου καταλόγου μέχρι τη βαθύτερη ένθεση μέχρι να παρακαμφθούν από ένα άλλο htaccess.

Δεν είναι απαραίτητο να παραθέσετε πλήρως όλες τις επιλογές στο child.htaccess εάν δεν αλλάξουν. Αρκεί να καθορίσετε (εκ νέου εκχώρηση) μόνο εκείνες τις επιλογές και τις οδηγίες που αλλάζουν. Οι υπόλοιπες επιλογές θα κληρονομηθούν επίσης από τον γονέα.


Παράδειγμα

Ας υποθέσουμε ότι έχετε αυτήν τη διαδρομή /site/folder_one/subfolder/other/
Στο αρχείο /site/.htaccess ορίζετε:
Επιλογές - Ευρετήρια Να επιτρέπεται από όλα
Στο αρχείο /site/folder_one/.htaccess ορίζετε:
Αρνηθείτε από όλους
Στο αρχείο /site/folder_one/subfolder/.htaccess ορίζετε:
Επιλογές + Ευρετήρια Να επιτρέπεται από όλα
Αυτό είναι αυτό που παίρνετε:
Ο φάκελος του ιστότοπου θα εμφανίζει αρχεία οποιουδήποτε περιεχομένου, εκτός εάν έχετε άμεση πρόσβαση σε αυτά. Ή ένα αρχείο ευρετηρίου, εάν δεν υπάρχει ρητή πρόσβαση σε ένα από τα αρχεία. Εάν το αρχείο ευρετηρίου λείπει, λαμβάνεται ένα σφάλμα 403.
Η πρόσβαση στο φάκελο folder_one είναι κλειστή. Ακόμα κι αν γνωρίζετε το όνομα του αρχείου και το πληκτρολογήσετε στη γραμμή διευθύνσεων, ο διακομιστής θα απαντήσει με ένα σφάλμα 403.
Ο φάκελος υποφάκελου επιτρέπεται για άμεση πρόσβαση ή, ελλείψει αρχείου ευρετηρίου, θα εμφανίζει τα περιεχόμενα του καταλόγου. Τα ίδια δικαιώματα ισχύουν και για τον άλλο φάκελο.
Εάν καταργήσετε το αρχείο htaccess από το φάκελο folder_one, θα κληρονομήσει τα δικαιώματα από τη γονική τοποθεσία.


2. Λίγο SEO (που θα ήμασταν χωρίς αυτό)


Φροντίστε να μην ξεχάσετε την κατάσταση . Εάν δεν έχετε τον κεντρικό υπολογιστή αυτής της ενότητας, ο ιστότοπός σας θα αρχίσει να εκπέμπει ένα σφάλμα 500. Αυτή η συγκεκριμένη ενότητα περιλαμβάνεται στην έκδοση του Apache από προεπιλογή. Λοιπόν, τι θα συμβεί αν... Υπάρχουν κάθε λογής hosters και οι διαχειριστές τους.

Αυτό το μέρος είναι πιο χρήσιμο για SEO. Η ενότητα επανεγγραφής, όπως υποδηλώνει το όνομά της, ασχολείται με ανακατευθύνσεις (hi Cap).

Σε αυτό το μέρος του αρχείου, υποδείξαμε δύο συγχωνεύσεις: συγχωνεύσαμε το your_site και το www.your_site Ακόμα κι αν ο χρήστης πληκτρολογήσει τον ιστότοπό σας χωρίς WWW, θα ανακατευθυνθεί με μια ανακατεύθυνση 301 στο www.your_site.
Επίσης, απαλλαγήκαμε από το /index.php στη συμβολοσειρά ερωτήματος. Εάν ο χρήστης πληκτρολογήσει www.your_site/index.php θα τον ανακατευθύνει (και πάλι με μια ανακατεύθυνση 301) στο www.your_site.
Τώρα οι μηχανές αναζήτησης δεν θα μπερδεύονται μεταξύ του www και δεν θα αντιγράφουν την κύρια σελίδα στα αποτελέσματα ευρετηρίασης του ιστότοπού σας. Συγκόλληση τομέα Google SEO αν δεν καταλαβαίνετε γιατί χρειάζεται.

3. Ποιος είναι υπεύθυνος για τον φάκελο;

Εάν έχετε αρχεία index.html και index.php στον φάκελό σας (δεν ξέρω γιατί και ποιος το χρειάστηκε, αλλά το έχω δει περισσότερες από μία φορές), τότε πώς μπορείτε να πείτε στον διακομιστή ποιο από αυτά είναι πιο ευρετηριασμένο ?

DirectoryIndex index.php
Μπορείτε επίσης να καθορίσετε εκεί, πείτε roosso.php, και στη συνέχεια πληκτρολογώντας τη διεύθυνση site.blah/blah/blah/ στη γραμμή ερωτήματος θα δείτε όχι ευρετήριο, αλλά roosso

4. Περισσότερες ρυθμίσεις...

SetEnv TZ Europe/Μόσχα ServerSignature Off AddDefaultCharset UTF-8
Η πρώτη γραμμή ορίζει τη ζώνη ώρας. Για παράδειγμα, στο Apache 2.22.22 υπήρχε ένα σφάλμα που σχετίζεται με αυτήν την επιλογή. Οι συναρτήσεις ώρας στην php δεν λειτουργούσαν μέχρι να ορίσετε τη ζώνη ώρας.

Η δεύτερη γραμμή είναι η υπογραφή διακομιστή. Τα έχετε δει περισσότερες από μία φορές σε κάθε είδους σελίδες συστήματος, όπως το 500ο σφάλμα ή το 403ο. Συνήθως υπάρχουν κάποιες τεχνικές πληροφορίες και το email του webmaster. Προτιμώ να κρύβω δεδομένα σχετικά με το λογισμικό στον διακομιστή ακόμα και σε τόσο μικρά πράγματα. Οι παρανοϊκοί συνάδελφοί μου θα με στηρίξουν.

Μαντέψτε τι κάνει η τρίτη γραμμή;

5. Όταν δεν υπάρχει πρόσβαση στο php.ini

Χρησιμοποιώντας .htaccess μπορούμε επίσης να διαχειριστούμε μια σειρά από ρυθμίσεις PHP. Στην κοινόχρηστη φιλοξενία, κατά κανόνα, δεν είναι δυνατή η αλλαγή των ρυθμίσεων του php.ini. Τις περισσότερες φορές αυτό δεν απαιτείται. Ωστόσο, εξακολουθούν να υπάρχουν ορισμένες επιλογές ελέγχου που μπορούν να μας φανούν χρήσιμες. Για παράδειγμα, αυξήστε το όριο στις μεταφορτώσεις αρχείων ή το όριο μεταφοράς χρησιμοποιώντας αυτήν τη μέθοδο POST.


Η πρώτη γραμμή σάς επιτρέπει να ανεβάσετε αρχεία μεγέθους έως 32 Megabyte. Η προεπιλογή στην php είναι συνήθως 8 ή 16 megabyte.
Η δεύτερη γραμμή επιτρέπει τη δημοσίευση έως και 10 megabyte. Η προεπιλεγμένη τιμή είναι συνήθως 2 Megabyte.
Η τρίτη γραμμή ορίζει την κωδικοποίηση που χρησιμοποιείται από τα σενάρια σας. Στον πυρήνα του, αντιγράφει τη γραμμή: "AddDefaultCharset UTF-8". Αλλά συχνά καταφεύγω στη ρύθμιση της κωδικοποίησης μέσω PHP.
Η τέταρτη γραμμή αλλάζει το χρονικό όριο που εκχωρείται για την εκτέλεση του σεναρίου. Από προεπιλογή είναι συνήθως 30 δευτερόλεπτα. Αλλά μερικές φορές κάποια περίπλοκη επεξεργασία απαιτεί περισσότερο χρόνο.

6. Τύποι αρχείων. Δυσκολία και όχι απάτη.

Στην πρακτική μου, συνέβη μερικές φορές ότι μετά από κάποια ενημέρωση από τον πάροχο λογισμικού, οι τύποι αρχείων εξαφανίστηκαν. Αν και αυτό είναι σπάνιο. Σε 10 χρόνια, μόνο δύο περιπτώσεις. Αλλά μερικές φορές χρειαζόταν να κάνω την html να λειτουργεί όπως η php. Και μερικές φορές χρειάζεται να διδάξετε τον Apache να διακρίνει τους τύπους αρχείων που δεν γνωρίζει. (Όπως αποδείχθηκε, ο Apache γενικά γνωρίζει λίγα για σπάνιους τύπους αρχείων.) Σε μια τέτοια περίπτωση, ο ακόλουθος κώδικας θα μας σώσει:

Εφαρμογή AddHandler/x-httpd-php .html AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi AddType application/x-javascript .js AddType text/css .css AddType text/xml .xml AddType application/octet-stream .doc .mov .avi .pdf .xls # ForceType application/x-httpd-php

Η πρώτη γραμμή θα επιτρέψει στα αρχεία μας php να έχουν επέκταση html, αλλά να εκτελούνται ως php. Είναι χρήσιμο σε πολλές περιπτώσεις. Και στις παλιές καλές μέρες, όταν οι μηχανές αναζήτησης ευρετηρίαζαν καλύτερα το CNC, μια τέτοια γραμμή έρχονταν πάντα στη διάσωση.
Μπορούμε να εκχωρήσουμε εκ νέου, να προσθέσουμε ή να αντικαταστήσουμε οποιουσδήποτε τύπους αρχείων για να ταιριάζουν με τα δικαιώματα που μας ταιριάζουν.

Ενδιαφέρον κόλπο

Παρεμπιπτόντως, μπορείτε εύκολα να γράψετε, για παράδειγμα, αυτή τη γραμμή:

Εφαρμογή AddHandler/x-httpd-php .i
Στη συνέχεια μετονομάστε όλα τα αρχεία σας, αλλάζοντας την επέκταση σε .i (χωρίς να ξεχνάμε φυσικά τους συνδέσμους) και οι διευθύνσεις των αρχείων στο site σας δεν θα είναι site.my/index.php?uri αλλά site.my/index. i?uri

Για παράδειγμα γράφω
Εφαρμογή AddHandler/x-httpd-php .roosso
και να δημιουργήσω ένα αρχείο alex.roosso στη ρίζα του ιστότοπού μου μέσα στον συνηθισμένο κώδικα PHP. Αυτή είναι σαν μια σελίδα για την αγαπημένη μου. Και στη γραμμή διευθύνσεων θα μοιάζει με www.black-web.ru/alex.roosso (ο σύνδεσμος λειτουργεί, μπορείτε να δείτε ότι είναι έτσι).


Η δεύτερη γραμμή καθορίζει ποιες επεκτάσεις αρχείων πρέπει να εκτελούνται ως σενάρια cgi.

Η τρίτη, η τέταρτη και η πέμπτη γραμμή, για κάθε ενδεχόμενο, καθορίζουν τον τύπο mime των αρχείων με ανάλυση css, js, xml. Μην το συγχέετε με την εκχώρηση κεφαλίδας στην απάντηση του διακομιστή σε ένα αίτημα, όπως γίνεται στις δύο πρώτες γραμμές.

Η έκτη γραμμή αυτής της ενότητας είναι απαραίτητη εάν ο ιστότοπός σας έχει περιεχόμενο με δυνατότητα λήψης για χρήστες. Εάν προσθέσετε αυτήν τη γραμμή, τότε κατά την πρόσβαση σε αυτά τα αρχεία θα τους ζητηθεί να τα κατεβάσουν στον υπολογιστή και όχι, όπως συμβαίνει τώρα στα σύγχρονα προγράμματα περιήγησης, με μια δέσμη προσθηκών που ανοίγει ακόμη και το Word στο πρόγραμμα περιήγησης.

Σχολίασα την έβδομη γραμμή. Αυτή η γραμμή είναι υποχρεωτική και εθελοντική, όλα τα αρχεία από τον διακομιστή σας θα εκκινηθούν ως php. Είναι καλύτερα να το χρησιμοποιείτε μόνο σε ξεχωριστούς φακέλους, εάν είναι απαραίτητο.

7. Ενήλικες και παιδιά γνωρίζουν ότι τα αρχεία βαραίνουν λιγότερο...

Χρήσιμο για να κάνετε τις σελίδες σας να φορτώνουν πιο γρήγορα. Γι' αυτό οι άνθρωποι σκέφτηκαν την αρχειοθέτηση αρχείων. Και μετά σκέφτηκαν περισσότερα και αποφάσισαν ότι μπορούσαν να αρχειοθετήσουν και τις δύο σελίδες σε ιστότοπους και φωτογραφίες. Και κάντε το απαρατήρητο από τον χρήστη, αλλά μειώστε σημαντικά την επισκεψιμότητα και επιταχύνετε τη φόρτωση της σελίδας. Τα μαγικά λόγια ειπώθηκαν, τώρα ας συζητήσουμε πώς μπορεί να γίνει αυτό.

Το Apache έχει δύο μονάδες συμπίεσης. Και οι δύο δεν είναι προεπιλεγμένες λειτουργικές μονάδες, επομένως ενδέχεται να μην υπάρχουν απαραίτητα στον παροχέα σας. Όμως, όπως έχει δείξει η πρακτική, το 99% των παρόχων έχει ένα από αυτά. Το πιο συνηθισμένο είναι το mod_deflate. Για να το χρησιμοποιήσετε για να συμπιέσετε όλο το περιεχόμενο στον ιστότοπό σας, προσθέστε τις ακόλουθες γραμμές στο .htaccess:


Όπως μπορείτε να δείτε, πρέπει να αναφέρουμε τον τύπο mime των αρχείων που πρέπει να συμπιεστούν. Μπορείτε να προσθέσετε βίντεο και εικόνες εδώ, αλλά αυτό θα είναι ελάχιστα χρήσιμο. Επειδή το jpeg ή το gif είναι ήδη συμπιεσμένες μορφές από μόνες τους. Ακριβώς όπως το avi ή το flv. Στην πραγματικότητα δεν έχετε τίποτα να κερδίσετε αν τα αναφέρετε.

Η δεύτερη λιγότερο δημοφιλής ενότητα είναι το mod_gzip Για να ενεργοποιήσετε τη συμπίεση χρησιμοποιώντας το, προσθέστε αυτές τις γραμμές:


Αυτή η ενότητα μπορεί να λειτουργήσει με μάσκες, κάτι που είναι αναμφίβολα ένα μεγάλο πλεονέκτημα. Και η σύνταξή του είναι πολύ πιο ευέλικτη από την προηγούμενη. Αλλά χρησιμοποιείται λιγότερο συχνά. Και όσον αφορά τη συμπίεση, δεν τολμώ καν να κρίνω ποια ενότητα είναι καλύτερη. Δεν παρατήρησα μεγάλη διαφορά κατά τη διάρκεια των δοκιμών.

8. Μπορείτε να το κάνετε ακόμα πιο γρήγορα;

Μπορώ. Εάν χρησιμοποιείτε προσωρινή αποθήκευση σελίδων. Η προσωρινή αποθήκευση έχει πλεονεκτήματα και μειονεκτήματα, επομένως πρέπει να προσεγγίσετε αυτό το ζήτημα με προετοιμασία. Για έναν ιστότοπο που ενημερώνεται δυναμικά κάθε 2-3 λεπτά, για παράδειγμα ένα δημοφιλές φόρουμ, πρέπει να λάβετε υπόψη ότι ο χρήστης πρέπει να δει ενημερωμένες πληροφορίες. Αλλά κάθε ιστότοπος έχει περιεχόμενο που είναι περισσότερο ή λιγότερο στατικό. Για παράδειγμα, οι ίδιες εικόνες ή αρχεία στυλ. Επομένως, θα χρειαστεί να χρησιμοποιήσουμε διαφορετικά την προσωρινή αποθήκευση για διαφορετικό περιεχόμενο στον ιστότοπο. Στη σήμανση html μπορούμε πάντα να χρησιμοποιούμε μετα-ετικέτες. Και μέσω php μπορούμε να ορίσουμε κεφαλίδες απόκρισης διακομιστή. Το ερώτημα παραμένει, τι να κάνουμε με τα css, js, image κ.λπ. και ούτω καθεξής.

Δύο λειτουργικές μονάδες μπορούν να μας βοηθήσουν σε αυτό: mod_headers και mod_expires, οι οποίες μπορούν να ορίσουν κεφαλίδες στην απόκριση του διακομιστή και να ενημερώσουν το πρόγραμμα περιήγησής σας τι και πώς να αποθηκεύει προσωρινά. Μία από τις ενότητες είναι συνήθως διαθέσιμη από τον πάροχο, αλλά όπως συμβαίνει με κάθε λειτουργική μονάδα που δεν περιλαμβάνεται στην τυπική έκδοση του Apache, κανείς δεν θα σας δώσει 100% εγγύηση. Επομένως, και πάλι, για να αποφευχθεί το 500ο σφάλμα, καθορίζει τις προϋποθέσεις για κάθε μία από τις ενότητες.

#disable caching
Αυτή είναι η σύνταξη για το mod_headers. Νομίζω ότι είναι ξεκάθαρο από τα σχόλια τι είναι τι.
Σε αυτήν την ενότητα έχω απενεργοποιήσει την προσωρινή αποθήκευση αρχείων php. Αν και, κατά τη γνώμη μου, ένα σύντομο χρονικό διάστημα προσωρινής αποθήκευσης δεν θα τους βλάψει. 5-30 δευτερόλεπτα είναι ένα χρονικό διάστημα κατά το οποίο αλλάζουν ελάχιστα. Και σε πολλούς χρήστες αρέσει να χρησιμοποιούν το κλειδί πίσω. Για να μην φορτωθεί η σελίδα δεύτερη φορά, αλλά για να την παραλάβετε από την κρυφή μνήμη, εξακολουθεί να είναι κατάλληλο ένα εύλογο διάστημα προσωρινής αποθήκευσης.

Στη δεύτερη ενότητα, όπου είναι οι προϋποθέσεις για το mod_expires, κάνω ακριβώς αυτό - για την PHP ορίζω ένα μικρό διάστημα προσωρινής αποθήκευσης.

9. Κανόνες ευγενικού τόνου...

Στη διαδικασία εκσυγχρονισμού του ιστότοπού μας, συχνά αφήνουμε ουρές με τη μορφή συνδέσμων που οδηγούν σε σελίδες που έχουμε διαγράψει. Μερικές φορές τέτοιοι σύνδεσμοι προέρχονται από άλλους ιστότοπους ή μηχανές αναζήτησης. Για να μην χάσετε χρήστες, θεωρείται ευγενικό να έχετε δικές σας σελίδες για διάφορα είδη λαθών. Συμπεριλαμβανομένων ακόμη και σφαλμάτων διακομιστή. Για παράδειγμα, το τυπικό μήνυμα σχετικά με το 500ο σφάλμα είναι πολύ βαρετό και ζοφερό και είναι απίθανο να κάνει τον χρήστη να θέλει να επισκεφθεί ξανά τη σελίδα σας. Αλλά το htaccess έχει κόλπα που μπορούν να κάνουν ακόμα και αυτή τη σελίδα πιο φιλόξενη.

# Bad Rquest ErrorDocument 400 /400.html # Απαιτείται εξουσιοδότηση ErrorDocument 401 /401.html # Forbidden ErrorDocument 403 /403.html # Not found ErrorDocument 404 /404.html # Δεν επιτρέπεται η μέθοδος ErrorDocument /40Document 40. 408 /408.html # Αίτημα URI πολύ μεγάλου λάθους Έγγραφο σφάλματος 414 /414.html # Σφάλμα εσωτερικού διακομιστή ΣφάλμαΈγγραφο 500 /500.html # Δεν υλοποιήθηκε ΣφάλμαΈγγραφο 501 /501.html # Κακή Πύλη ΣφάλμαΈγγραφο 502 #30/502 με δυνατότητα λειτουργίας Σφάλμα Υπηρεσίας 502 /502. 503.html # Έγγραφο σφάλματος χρονικού ορίου λήξης πύλης 504 /504.html
Για σφάλματα 400, μπορείτε επίσης να χρησιμοποιήσετε δυναμικές σελίδες στην PHP. Αλλά για 500 είναι καλύτερα να το κάνετε σε html και js. Αυτό το μέρος των σφαλμάτων συνήθως σχετίζεται με σφάλματα διακομιστή (στις περισσότερες περιπτώσεις) και η php ή η cgi συνήθως δεν λειτουργούν σε μια τέτοια κατάσταση.

Εάν είστε πολύ τεμπέλης για να δημιουργήσετε τόσες πολλές σελίδες, ορίστε τη σελίδα σφάλματος στην κύρια σελίδα του ιστότοπού σας ή του χάρτη ιστότοπού σας.

Όλα αυτά τα κάνεις αποκλειστικά για ανθρώπους. Τα ρομπότ αναζήτησης δεν ενδιαφέρονται αν έχετε σελίδες σφαλμάτων ή όχι. Βλέπουν την απάντηση του διακομιστή με έναν κωδικό σφάλματος και αποκλείουν τη σελίδα σας από την αναζήτηση. Λάβετε υπόψη, λοιπόν, ότι αυτό δεν είναι πανάκεια. Αυτό είναι απλώς μια ευγένεια προς το κοινό σας και την εικόνα του ιστότοπού σας.

10. Ας συνοψίσουμε

Οι γνώστες κατανοούν ότι δεν περιγράφονται όλα σε αυτό το άρθρο. Εδώ έχω αγγίξει μόνο την επιφάνεια του παγόβουνου. Στην πραγματικότητα, οι δυνατότητες του .htaccess είναι πολύ πιο εκτεταμένες από αυτές που περιγράφονται στο άρθρο. Αλλά δεν επιδίωξα τον στόχο της μετάφρασης του εγχειριδίου htaccess στα ρωσικά. Το μόνο που ήθελα ήταν να δημιουργήσω έναν μικρό σκελετό του αρχείου .htaccess για όσους μόλις ξεκίνησαν να μελετούν αυτό το θέμα, ώστε να εξοικονομήσουν χρόνο αναζητώντας πληροφορίες στο Διαδίκτυο.

Ως αποτέλεσμα όλων των χειρισμών, θα έπρεπε να έχουμε λάβει ένα αρχείο με το ακόλουθο περιεχόμενο:

Επιλογές All -ExecCGI -Indexes -Includes +FollowSymLinks RewriteEngine σε RewriteBase / RewriteCond %(HTTP_HOST) ^black-web RewriteRule (.*) http://www.black-web.ru/$1 RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP / RewriteRule ^index\.php$ http://www.black-web.ru/ DirectoryIndex index.php SetEnv TZ Europe/Μόσχα ServerSignature Off #AddDefaultCharset UTF-8 php_value upload_max_filesize 32M php_value post_max_size 10M php_value default_charset utf-8 php_value max_execution_time 200Εφαρμογή AddHandler/x-httpd-php .html AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi AddType application/x-javascript .js AddType text/css .css AddType text/xml .xml AddType application/octet-stream .doc .mov .avi .pdf .xls # ForceType application/x-httpd-php AddOutputFilterByType DEFLATE κείμενο/html κείμενο/απλό κείμενο/xml εφαρμογή/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript mod_gzip_on Ναι mod_gzip_dechunk Ναι mod_gzip_item_include αρχείο \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application.pplication zip _item_exclude rspheader ^ Κωδικοποίηση περιεχομένου:.*gzip.* #cache αρχεία html και htm για μία ημέρα Σύνολο κεφαλίδων Cache-Control "max-age=43200"#cache css, javascript και αρχεία κειμένου για μία εβδομάδα Σύνολο κεφαλίδων Cache-Control "max-age=604800"#cache Flash και εικόνες για ένα μήνα Σύνολο κεφαλίδων Cache-Control "max-age=2592000"#disable caching Η κεφαλίδα απορρίφθηκε το Cache-Control ExpiresActive Στην #προεπιλεγμένη προσωρινή μνήμη είναι 5 δευτερόλεπτα ExpiresΠροεπιλεγμένη "πρόσβαση συν 5 δευτερόλεπτα" #cache Flash και εικόνες για ένα μήνα ExpiresByType εικόνα/εικονίδιο x "πρόσβαση συν 2592000 δευτερόλεπτα" ExpiresByType εικόνα/jpeg "πρόσβαση συν 25920 δευτερόλεπτο" Λήξη πρόσβαση συν 2592000 δευτερόλεπτα" ExpiresByType εικόνα/gif "πρόσβαση συν 2592000 δευτερόλεπτα" ExpiresByType εφαρμογή/x-shockwave-flash "πρόσβαση συν 2592000 δευτερόλεπτα" #cache css, javascript και αρχεία κειμένου για μία εβδομάδα "ExpiresByType 4" plus0scs ExpiresByType text/javascript "access plus 604800 seconds" ExpiresByType application/javascript "access plus 604800 seconds" ExpiresByType application/x-javascript "access plus 604800 seconds" #cache html and htm textiresecontext B20T " #cache xml αρχεία για δέκα λεπτά ExpiresByType application/xhtml+xml "πρόσβαση συν 600 δευτερόλεπτα"# Bad Rquest ErrorDocument 400 /400.html # Απαιτείται εξουσιοδότηση ErrorDocument 401 /401.html # Forbidden ErrorDocument 403 /403.html # Not found ErrorDocument 404 /404.html # Δεν επιτρέπεται η μέθοδος ErrorDocument /40Document 40. 408 /408.html # Αίτημα URI πολύ μεγάλου λάθους Έγγραφο σφάλματος 414 /414.html # Σφάλμα εσωτερικού διακομιστή ΣφάλμαΈγγραφο 500 /500.html # Δεν υλοποιήθηκε ΣφάλμαΈγγραφο 501 /501.html # Κακή Πύλη ΣφάλμαΈγγραφο 502 #30/502 με δυνατότητα λειτουργίας Σφάλμα Υπηρεσίας 502 /502. 503.html # Έγγραφο σφάλματος χρονικού ορίου λήξης πύλης 504 /504.html

11. Επίλογος.

Προσπάθησα να μην βιαστώ να γράψω το άρθρο και χρειάστηκε σχεδόν μια μέρα. Αλλά και πάλι κάπου θα μπορούσα να κάνω λάθη στην ορθογραφία ή στη στίξη. Σας ζητώ να μην εκτελέσετε, αλλά να ελεήσετε. Καλύτερα να γράψω σε προσωπικό μήνυμα για να διορθώσω τα λάθη.

Και τέλος, για όσους τους αρέσει να πειραματίζονται, μερικές γραμμές .htaccess. Κρίνοντας από τη δική μου εμπειρία, η γνώση μαθαίνεται καλύτερα στην πράξη παρά στη θεωρία.

Πληκτρολογώντας τη διεύθυνση στη γραμμή του προγράμματος περιήγησης, λαμβάνετε αρχεία στον υπολογιστή σας που εμφανίζει το πρόγραμμα περιήγησης. Ο διακομιστής ιστού ελέγχει ποια αρχεία και πώς να τα εμφανίσει (να τα στείλει). Υπάρχουν δύο πιο δημοφιλείς διακομιστές: IIS και .

Όπως κάθε πρόγραμμα, ένας διακομιστής ιστού έχει ορισμένες ρυθμίσεις. Ωστόσο, εσείς, ως χρήστης Apache, μπορεί (και πιθανότατα όχι, αν μιλάμε για κοινόχρηστη φιλοξενία) να έχετε τα δικαιώματα να αλλάξετε τη διαμόρφωση του Apache μέσω των κύριων αρχείων του, το αποτέλεσμα των οποίων ισχύει για όλους τους χρήστες αυτού του διακομιστή. Ωστόσο, μπορείτε να αλλάξετε ορισμένα αρχεία διαμόρφωσης, τα οποία ισχύουν μόνο για τον ιστότοπό σας. Ένα από αυτά τα αρχεία είναι το .htaccess

Αυτό είναι ένα ευέλικτο αρχείο διαμόρφωσης για τον διακομιστή ιστού Apache. "Ευέλικτο" σημαίνει ότι μόλις αλλάξετε κάτι σε αυτό το αρχείο, οι αλλαγές τίθενται αμέσως σε ισχύ. Χρησιμοποιώντας το, μπορείτε να παρακάμψετε πολλές οδηγίες από το αρχείο httpd.conf(αυτό το αρχείο είναι το κύριο αρχείο διαμόρφωσης του διακομιστή Apache και οι ενέργειές του ισχύουν πλήρως για όλους τους χρήστες αυτού του αντιγράφου του Apache). Σε περιπτώσεις που δεν έχετε πρόσβαση στο αρχείο διαμόρφωσης του Apache (η ίδια εικονική φιλοξενία), αυτό το αρχείο θα σας βοηθήσει.

Αυτό το αρχείο δεν είναι προσβάσιμο στον χρήστη Ιστού από το πρόγραμμα περιήγησης. Εάν αρχείο. htaccessβρίσκεται στον ριζικό κατάλογο του διακομιστή, οι ενέργειές του εφαρμόζονται σε ολόκληρο τον διακομιστή, εκτός από αυτούς τους φακέλους όπου βρίσκεται άλλο αρχείο. htaccess(και εκτός από όλους τους φακέλους «κάτω» αυτός ο φάκελος με τον δεύτερο. htaccess).

Η δομή των καταλόγων σας στον διακομιστή είναι η εξής:

|-χρήστης | | | -χρήστης1 | | | -χρήστης2 | |-δεδομένα | | | -δεδομένα1 | | | -δεδομένα2 |

καταλόγους χρήστη 1Και χρήστης 2θα είναι ένθετα σε σχέση με τον κατάλογο χρήστης. Αν το βάλουμε σε έναν κατάλογο wwwαρχείο. htaccess, τότε η επίδρασή του θα επεκταθεί αυτόματα στους καταλόγους χρήστη 1Και χρήστης 2.

Στον κατάλογο δεδομέναβάλε άλλο αρχείο. htaccess, σε σύγκριση με αυτό που υπάρχει στον κατάλογο χρήστης. Και για τους καταλόγους data1 και data2, θα λειτουργήσει το αρχείο .htaccess που βρίσκεται στα δεδομένα.

Περιλαμβάνεται πλήρης υποστήριξη για οδηγίες .htaccess...

Ανανεώσεις τομέα 199-00 RUR

Αυτό το υλικό είναι ένα από τα πιο σημαντικά, γι 'αυτό συνιστώ να του δώσετε ιδιαίτερη προσοχή.

Σε μια τυπική έκφραση, μπορείτε να χρησιμοποιήσετε οποιουσδήποτε εκτυπώσιμους χαρακτήρες και κενά, αλλά ορισμένοι χαρακτήρες έχουν ιδιαίτερη σημασία:

  • Οι παρενθέσεις () χρησιμοποιούνται για τον διαχωρισμό ομάδων χαρακτήρων.

    Ο χαρακτήρας ^ σηματοδοτεί την αρχή μιας γραμμής.

    Ο χαρακτήρας $ σηματοδοτεί το τέλος της γραμμής.

    Σύμβολο. αντιπροσωπεύει οποιονδήποτε χαρακτήρα.

    Σύμβολο | υποδηλώνει εναλλακτική. Για παράδειγμα, οι εκφράσεις "A|B" και "(ABC|DEF)" σημαίνουν "A ή B" και "ABC ή DEF", αντίστοιχα.

    Σύμβολο? τοποθετείται μετά από έναν χαρακτήρα (ή ομάδα χαρακτήρων), που μπορεί να υπάρχει ή να μην υπάρχει. Για παράδειγμα, η έκφραση "jpe?g" θα ταιριάζει τόσο με τη συμβολοσειρά "jpg" και τη συμβολοσειρά "jpeg". Παράδειγμα έκφρασης με ομάδα χαρακτήρων: "super-(puper-)?site".

    Ο χαρακτήρας * τοποθετείται μετά από έναν χαρακτήρα (ή ομάδα χαρακτήρων) που μπορεί να απουσιάζει ή να υπάρχει απεριόριστος αριθμός φορών στη σειρά. Για παράδειγμα, η έκφραση "jpe*g" ταιριάζει με τις συμβολοσειρές "jpg", "jpeg" και "jpeeeeeeeg".

    Ο χαρακτήρας + λειτουργεί παρόμοια με τον χαρακτήρα *, με τη μόνη διαφορά ότι ο χαρακτήρας που προηγείται πρέπει να υπάρχει τουλάχιστον μία φορά. Για παράδειγμα, η έκφραση "jpe+g" ταιριάζει με τις συμβολοσειρές "jpeg" και "jpeeeeg", αλλά όχι με "jpg".

    Οι αγκύλες χρησιμοποιούνται για την παράθεση έγκυρων χαρακτήρων. Για παράδειγμα, η έκφραση "" είναι ισοδύναμη με την έκφραση "a|b|c", αλλά η επιλογή με αγκύλες είναι συνήθως πιο γρήγορη. Μπορείτε να χρησιμοποιήσετε εύρη εντός παρενθέσεων: για παράδειγμα, η έκφραση "" είναι ισοδύναμη με την έκφραση "". Εάν οι χαρακτήρες μέσα στις αγκύλες αρχίζουν με ^, σημαίνει οποιονδήποτε άλλο χαρακτήρα εκτός από αυτούς που αναφέρονται στις αγκύλες. Για παράδειγμα, η έκφραση "[^0-9]+" σημαίνει μια συμβολοσειρά οποιωνδήποτε χαρακτήρων εκτός από αριθμούς.

    Το σύμβολο \ τοποθετείται πριν από ειδικούς χαρακτήρες, εάν χρειάζονται στην αρχική τους μορφή. Για παράδειγμα, η έκφραση "jpe\+g" ταιριάζει μόνο με μία συμβολοσειρά, "jpe+g".

    (3.9) - τα σγουρά άγκιστρα υποδεικνύουν ένα εύρος του αριθμού των χαρακτήρων, στην περίπτωση αυτή επιτρέπονται από 3 έως 9 χαρακτήρες, το μήκος της σειράς χαρακτήρων πρέπει να είναι ίσο ή μεγαλύτερο από 3 ίσο ή μικρότερο από 9 χαρακτήρες. Χρησιμοποιείται κυρίως. Για παράδειγμα, ελέγχουμε τη συμβολοσειρά αιτήματος HTTP που αποστέλλεται από το πρόγραμμα περιήγησης στον διακομιστή για να δούμε αν το περιεχόμενό του ταιριάζει με ένα συγκεκριμένο μοτίβο:
    ♳ RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/
    ♴ ας υποθέσουμε ότι ζητήσαμε μια σελίδα ευρετηρίου στον διακομιστή %(THE_REQUEST) = "GET /index.html HTTP/1.1"
    ♵ σε αυτήν την περίπτωση διαβάζουμε τη γραμμή πηγής που περιέχει σγουρά άγκιστρα ως εξής: "beginning_of_received_dataGETspace/index.phpspaceHTTP/"
    ♶ δηλ. Θα μπορούσε να είναι "GET", ή μπορεί να είναι "POST", μπορεί να υπάρχουν άλλες τιμές... απλά σύμβολα, ανάλογα με το τι και πώς ζητάμε το αρχείο index.php στον διακομιστή.

    Οτιδήποτε μετά το σύμβολο "#" θεωρείται σχόλιο.

Επαναλαμβάνω για άλλη μια φορά ότι για περαιτέρω επιτυχή κατανόηση της περιγραφής, των παραδειγμάτων του .htaccess και της διαμόρφωσης του, αυτές οι πληροφορίες είναι απλά απαραίτητες!!!

Τομείς που κυκλοφόρησαν πρόσφατα με PR και TIC:

Η υπηρεσία http://reg.ru - ο μεγαλύτερος καταχωρητής φιλοξενίας και τομέα σάς επιτρέπει να υποβάλετε αίτηση για εγγραφή ενός ονόματος τομέα που κυκλοφόρησε πρόσφατα από τον προηγούμενο Διαχειριστή. Οι εκδοθέντες τομείς έχουν συχνά υψηλούς δείκτες TIC και PR και μπορεί να είναι ενδιαφέροντες για απόκτηση.

Κυκλοφόρησε domains.RU με TIC:
Διαθέσιμοι τομείς premium:

Όγκος πληροφοριών: 5805 byte

165

Htaccess - Χρήση και Σύνταξη

Η βαθμολογία σας: αριστούργημα υπέροχο πολύ καλό καλό κανονικό Δεν το έχω διαβάσει ανεκτό μέτριο κακό πολύ κακό δεν διαβάζει

Στο περιβάλλον προγραμματισμού Ιστού, το αρχείο .htaccess χρησιμοποιείται συχνά όταν φιλοξενούνται τοποθεσίες που εκτελούν έναν διακομιστή Apache. Αυτό είναι ένα πολύ χρήσιμο αρχείο που σας επιτρέπει να ορίσετε μη καθορισμένες ή να παρακάμψετε επιλογές που ορίζονται στο httpd.conf ή στο apache.conf για μια συγκεκριμένη τοποθεσία ή κατάλογο αυτού του ιστότοπου.

Το αρχείο επηρεάζει τον τρέχοντα κατάλογο (όπου βρίσκεται) και όλους τους καταλόγους "παρακάτω", π.χ. όλους τους θυγατρικούς καταλόγους, εκτός εάν έχουν οριστεί το δικό τους αρχείο .htaccess.

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

Κανόνες γραφής

Οι οδηγίες αρχείων καθορίζονται μία ανά γραμμή.

Όλες οι διαδρομές ξεκινούν από τη ρίζα του ιστότοπου (όχι από τη ρίζα του συστήματος αρχείων διακομιστή!)

Για παράδειγμα, εάν το απαιτούμενο αρχείο στον διακομιστή βρίσκεται κατά μήκος της διαδρομής /var/www/mysite.ru/mydir/file.html, τότε η σωστή διαδρομή θα είναι /mydir/file.html

Εάν η ένδειξη url εκτελείται, τότε η ένδειξη πρέπει να γίνει χρησιμοποιώντας την ένδειξη πρωτοκόλλου.

Για παράδειγμα, εάν υπάρχει ανακατεύθυνση στον ιστότοπο www.mysite.ru, τότε πρέπει να καθορίσετε http://www.mysite.ru

Τα σχόλια είναι τα πάντα μετά το σύμβολο #

Μπορείτε να χρησιμοποιήσετε μεταβλητές περιβάλλοντος σε εκφράσεις. Η λίστα με τα πιο συχνά χρησιμοποιούμενα είναι παρακάτω.

Τέλος, όταν κάνετε αλλαγές σε ένα αρχείο, τίθενται αμέσως σε ισχύ. Δεν χρειάζεται να επανεκκινήσετε τίποτα.

Μεταβλητές Περιβάλλοντος

Αν και όχι συχνά, οι μεταβλητές περιβάλλοντος μπορούν ακόμα να χρησιμοποιηθούν στο αρχείο .htaccess. Μερικά από αυτά δίνονται παρακάτω (χάρη στον ιστότοπο htaccess.net.ru):

  • QUERY_STRING (παράμετροι ερωτήματος)
  • REMOTE_ADDR (διεύθυνση IP επισκέπτη)
  • REMOTE_HOST (όνομα κεντρικού υπολογιστή επισκέπτη)
  • REMOTE_USER (όνομα χρήστη εάν έχει επικυρωθεί)
  • REMOTE_METHOD (μέθοδος προγράμματος περιήγησης - GET ή POST)
  • PATH_INFO (διαδρομή αρχείου ιστοσελίδας)
  • HTTP_USER_AGENT (περιεχόμενο της κεφαλίδας παράγοντα χρήστη - τύπος προγράμματος περιήγησης)
  • HTTP_REFERER (περιεχόμενο κεφαλίδας αναφοράς)
  • HTTP_COOKIE (περιεχόμενο κεφαλίδας cookie)
  • HTTP_HOST (όνομα κεντρικού ιστότοπου)
  • TIME_YEAR (έτος, μήνας, κ.λπ.)
  • TIME_MONTH
  • TIME_DAY
  • TIME_HOUR
  • TIME_MIN
  • TIME_SEC
  • TIME_WDAY
  • REQUEST_URI (αιτηθείσα διεύθυνση URL)
  • REQUEST_FILENAME (αιτούμενο αρχείο)
  • THE_REQUEST (πλήρες αίτημα)

Κανονικές εκφράσεις σε .htaccess

Μπορείτε να χρησιμοποιήσετε κανονικές εκφράσεις σε αυτό το αρχείο. Η σύνταξή τους δίνεται παρακάτω. Χάρη στον ιστότοπο htaccess.net.ru

Σε μια τυπική έκφραση, μπορείτε να χρησιμοποιήσετε οποιουσδήποτε εκτυπώσιμους χαρακτήρες και κενά, αλλά ορισμένοι χαρακτήρες έχουν ιδιαίτερη σημασία:

  • Οι παρενθέσεις () χρησιμοποιούνται για τον διαχωρισμό ομάδων χαρακτήρων.
  • Ο χαρακτήρας ^ σηματοδοτεί την αρχή μιας γραμμής.
  • Ο χαρακτήρας $ σηματοδοτεί το τέλος της γραμμής.
  • Σύμβολο. αντιπροσωπεύει οποιονδήποτε χαρακτήρα.
  • Σύμβολο | υποδηλώνει εναλλακτική. Για παράδειγμα, οι εκφράσεις "A|B" και "(ABC|DEF)" σημαίνουν "A ή B" και "ABC ή DEF", αντίστοιχα.
  • Σύμβολο? τοποθετείται μετά από έναν χαρακτήρα (ή ομάδα χαρακτήρων), που μπορεί να υπάρχει ή να μην υπάρχει. Για παράδειγμα, η έκφραση "jpe?g" θα ταιριάζει τόσο με τη συμβολοσειρά "jpg" και τη συμβολοσειρά "jpeg". Παράδειγμα έκφρασης με ομάδα χαρακτήρων: "super-(puper-)?site".
  • Ο χαρακτήρας * τοποθετείται μετά από έναν χαρακτήρα (ή ομάδα χαρακτήρων) που μπορεί να απουσιάζει ή να υπάρχει απεριόριστος αριθμός φορών στη σειρά. Για παράδειγμα, η έκφραση "jpe*g" ταιριάζει με τις συμβολοσειρές "jpg", "jpeg" και "jpeeeeeeeg".
  • Ο χαρακτήρας + λειτουργεί παρόμοια με τον χαρακτήρα *, με τη μόνη διαφορά ότι ο χαρακτήρας που προηγείται πρέπει να υπάρχει τουλάχιστον μία φορά. Για παράδειγμα, η έκφραση "jpe+g" ταιριάζει με τις συμβολοσειρές "jpeg" και "jpeeeeg", αλλά όχι με "jpg".
  • Οι αγκύλες χρησιμοποιούνται για την παράθεση έγκυρων χαρακτήρων. Για παράδειγμα, η έκφραση "" είναι ισοδύναμη με την έκφραση "a|b|c", αλλά η επιλογή με αγκύλες είναι συνήθως πιο γρήγορη. Μπορείτε να χρησιμοποιήσετε εύρη εντός παρενθέσεων: για παράδειγμα, η έκφραση "" είναι ισοδύναμη με την έκφραση "". Εάν οι χαρακτήρες μέσα στις αγκύλες αρχίζουν με ^, σημαίνει οποιονδήποτε άλλο χαρακτήρα εκτός από αυτούς που αναφέρονται στις αγκύλες. Για παράδειγμα, η έκφραση "[^0-9]+" σημαίνει μια συμβολοσειρά οποιωνδήποτε χαρακτήρων εκτός από αριθμούς.
  • Το σύμβολο \ τοποθετείται πριν από ειδικούς χαρακτήρες, εάν χρειάζονται στην αρχική τους μορφή. Για παράδειγμα, η έκφραση "jpe\+g" ταιριάζει μόνο με μία συμβολοσειρά, "jpe+g".
  • Τα πάντα στα δεξιά του # θεωρούνται σχόλιο.

Πώς να το ενεργοποιήσετε

Στο Linux (LAMP), οι διαμορφώσεις του Apache συνήθως επιτρέπουν ήδη τη χρήση του αρχείου .htaccess. Στο FreeBSD, μπορεί να χρειαστεί να επιτρέψετε συγκεκριμένα αυτό το αρχείο χρησιμοποιώντας την οδηγία AllowOverride στην καθολική ρύθμιση παραμέτρων ή στη διαμόρφωση συγκεκριμένης τοποθεσίας.

Allow Override All

Απαγόρευση ανάγνωσης όλων των αρχείων σε έναν κατάλογο

Πρόσβαση από μια συγκεκριμένη διεύθυνση IP

ή άρνηση, επιτρέπω
αρνηθεί από όλους
επιτρέπουν από 192.168.0.1
επιτρέπουν από 192.168.0.2


όπου αντί για 192.168.0.1, υποδεικνύονται διευθύνσεις IP 192.168.0.2 από τις οποίες οι χρήστες μπορούν να έχουν πρόσβαση στον ιστότοπο. Διαφορετικά - σφάλμα 403.

Άρνηση πρόσβασης από συγκεκριμένες διευθύνσεις IP

διαταγή επιτρέπω, αρνούμαι
επιτρέπεται από όλους
άρνηση από 192.168.0.1
άρνηση από 192.168.0.2


Όπου αντί για τις καθορισμένες IP είναι απαραίτητο να υποδεικνύονται εκείνες από τις οποίες απαγορεύεται η πρόσβαση.

Άρνηση πρόσβασης σε αρχεία με μάσκα


διαταγή επιτρέπω, αρνούμαι
αρνηθεί από όλους


Αντί για ext1, ext2, ext3... εισάγουμε τις επεκτάσεις μας. Οι κανόνες άρνησης/πρόσβασης καθορίζονται με τον ίδιο τρόπο όπως για ολόκληρο τον κατάλογο ως σύνολο.

Ως ειδική περίπτωση, μπορείτε να ορίσετε πρόσβαση για ένα συγκεκριμένο αρχείο (ωστόσο, λαμβάνοντας υπόψη την κληρονομικότητα των δικαιωμάτων .htaccess - αυτή η πρόσβαση ή η απαγόρευση θα ισχύει για όλους τους υποκαταλόγους - δηλαδή για όλα τα αρχεία σε αυτόν τον κατάλογο και όλους τους παρακάτω καταλόγους) :


διαταγή επιτρέπω, αρνούμαι
αρνηθεί από όλους

Κωδικός πρόσβασης σε έναν κατάλογο

Συχνά χρησιμοποιείται κατά τη δημιουργία ιστότοπων στους οποίους δεν επιτρέπεται σε όλους να έχουν πρόσβαση (ή σε μέρη των οποίων). Όταν προσπαθείτε να ανοίξετε αυτήν τη διεύθυνση url, το πρόγραμμα περιήγησης ιστού θα ζητήσει από τον χρήστη μια σύνδεση και έναν κωδικό πρόσβασης.

AuthName "Εισαγωγή κωδικού πρόσβασης"
AuthType Basic
AuthUserFile /var/www/mysite.ru/.htpasswd
απαιτούν έγκυρο χρήστη


ΠΡΟΣΟΧΗ! Λάβετε υπόψη ότι εδώ η διαδρομή προς το αρχείο .htpasswd καθορίζεται από τη ρίζα του συστήματος αρχείων του διακομιστή και όχι από τον ιστότοπο!

Για να χρησιμοποιήσετε αυτήν τη μέθοδο, πρέπει να έχετε ένα αρχείο .htpasswd. Ο τρόπος δημιουργίας και χρήσης του περιγράφεται στον ίδιο ιστότοπο στην ενότητα web. Ακολουθεί ένα παράδειγμα δημιουργίας αυτού του αρχείου:

# htpasswd -c /var/www/mysite.ru/.htpasswd κωδικός πρόσβασης ονόματος χρήστη


Εάν ο διακόπτης -c δεν έχει καθοριστεί, το βοηθητικό πρόγραμμα htpasswd δεν θα δημιουργήσει ξανά το αρχείο, αλλά θα προσθέσει το όνομα χρήστη στα υπάρχοντα.

Λάβετε υπόψη ότι με αυτήν τη μέθοδο ελέγχου ταυτότητας, τα στοιχεία σύνδεσης και ο κωδικός πρόσβασης μεταδίδονται σε καθαρό κείμενο, επομένως συνιστάται η χρήση του πρωτοκόλλου HTTPS/SSL.

Ως ειδική περίπτωση, αυτή η κατασκευή μπορεί να χρησιμοποιηθεί μέσα σε ένα μπλοκ για να κωδικοποιήσετε μόνο ορισμένα αρχεία.

Σύνθετη προστασία με κωδικό πρόσβασης

Υπάρχει μια δομή τοποθεσίας:

/mysite.ru/A
/mysite.ru/A/B1
/mysite.ru/A/B2

Είναι απαραίτητο να διασφαλιστεί ότι ο έλεγχος ταυτότητας πραγματοποιείται μόνο όταν όλοι οι χρήστες έχουν πρόσβαση στον κατάλογο Α, αλλά ταυτόχρονα, ορισμένοι χρήστες έχουν πρόσβαση στον κατάλογο Β1 και άλλοι έχουν πρόσβαση στον κατάλογο Β2.

Θα χρειαστούμε αρχεία .htaccess σε κάθε κατάλογο.

Htaccess για τον κατάλογο Α:

AuthName "Εισαγωγή κωδικού πρόσβασης"
AuthType Basic


απαιτούν έγκυρο χρήστη


.htaccess για τον κατάλογο B1:

AuthName "Εισαγωγή κωδικού πρόσβασης"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

απαιτείται username1 username2 username3


.htaccess για τον κατάλογο B2:

AuthName "Εισαγωγή κωδικού πρόσβασης"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

απαιτείται username1 username4 username5


Αντί για usernameX, αντικαθιστούμε τα ονόματα των χρηστών που έχουν πρόσβαση στους αντίστοιχους καταλόγους.

Ανακατεύθυνση (ανακατεύθυνση) σε άλλο ιστότοπο

Ανακατεύθυνση / http://www.anothersite.ru


Εάν η ανακατεύθυνση είναι μόνιμη (δηλαδή για πάντα - κάτι που είναι πολύ χρήσιμο για τις μηχανές αναζήτησης), τότε η σύνταξη θα είναι ως εξής:

Μόνιμη ανακατεύθυνση / http://www.anothersite.ru


Αν χρησιμοποιήσετε τη λέξη temp αντί για μόνιμη, η ανακατεύθυνση θα είναι, αντίθετα, προσωρινή.

Ένα άλλο παράδειγμα ανακατεύθυνσης - από έναν συγκεκριμένο κατάλογο μέσα στον ιστότοπο:

Ανακατεύθυνση /dir2 http://www.anothersite.ru/dir2

Αντί για την οδηγία Redirect, χρησιμοποιούμε την οδηγία RedirectMatch. Η διαφορά είναι ότι αντί να προσδιορίζεται η διεύθυνση από την οποία θα ανακατευθυνθεί, καθορίζεται μια τυπική έκφραση.

RedirectMatch (.*)\.gif$ http://mysite.ru/$1.png


Ανακατευθύνει όλα τα αιτήματα σε .gif - σε αρχεία με το ίδιο όνομα, αλλά με την επέκταση .png, που βρίσκεται στο mysite.ru/

Ενα άλλο παράδειγμα:

RedirectMatch (.*\.jpg)$ http://mysite/$1

RewriteEngine On

RewriteCond %(HTTP_HOST) ^www\.old_site\.ru$

RewriteCond %(HTTP_HOST) ^old_site\.ru$
RewriteRule ^(.*)$ http://new_site.ru/$1

Εμφάνιση διαφορετικών σελίδων ανάλογα με τη διεύθυνση IP του χρήστη

SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR="redir"
RewriteCond %(REDIR) ανακατεύθυνση
RewriteRule ^/$/another_page.html


Αντί για 192.168.0.1 εισάγουμε την τιμή μας.

Αντικατάσταση της αρχικής σελίδας

DirectoryIndex other_file.php


Ουσιαστικά, εδώ αντικαθιστούμε την οδηγία DirectoryIndex που καθορίζεται στο αρχείο httpd.conf ή apache.conf.

Αντικατάσταση σελίδων σφαλμάτων

ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html


Έτσι, όταν, για παράδειγμα, παρουσιαστεί ένα σφάλμα 404, το πρόγραμμα περιήγησης δεν θα εμφανίσει τη σελίδα του, αλλά θα προσπαθήσει να φορτώσει μια στυλιζαρισμένη σελίδα από τον ιστότοπο.

Να είναι αδύνατη η εμφάνιση μιας λίστας αρχείων σε καταλόγους χωρίς αρχείο ευρετηρίου

Επιλογές - Ευρετήρια


Έτσι, ο χρήστης δεν θα μπορεί να εμφανίσει το περιεχόμενο ενός καταλόγου όπου δεν υπάρχει αρχείο ευρετηρίου (και σε έναν κατάλογο όπου υπάρχει αρχείο ευρετηρίου, δεν μπορεί να το κάνει από προεπιλογή).

Καθορισμός της εμφανιζόμενης κωδικοποίησης

Μπορείτε να πείτε στο πρόγραμμα περιήγησης με ποια κωδικοποίηση αποστέλλονται τα αρχεία σε αυτό. Αυτό θα μειώσει την πιθανότητα σφάλματος στον αυτόματο προσδιορισμό της κωδικοποίησης εάν τα αρχεία μεταφέρονται σε ένα και για κάποιο λόγο το πρόγραμμα περιήγησης αρχίζει να τα εμφανίζει σε άλλο.

AddDefaultCharset windows-1251

Καθορισμός αυτόματης μετατροπής της κωδικοποίησης των ληφθέντων αρχείων

Κατά τη μεταφόρτωση αρχείων στον ιστότοπο, θα μετατραπούν αυτόματα στην καθορισμένη κωδικοποίηση.

CharsetSourceEnc koi8-r

Προσθήκη χειριστών MIME

AddType "text/html" .myext
AddType "application/x-rar-compressed" .rar


Με αυτόν τον τρόπο μπορούμε να προσθέσουμε οδηγίες στον ιστότοπό μας που δεν περιγράφονται στην καθολική διαμόρφωση του Apache.

Αποκλεισμός ορισμένων User-Agents (προγράμματα περιήγησης ιστού, bots και ρομπότ)

Εδώ είναι ένα κομμάτι του αρχείου .htaccess στο οποίο έχουν αποκλειστεί αρκετοί User-Agents (προγράμματα περιήγησης ιστού, bots, στην πραγματικότητα).

SetEnvIfNoCase User-Agent "^Titan" bad_bot
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot
SetEnvIfNoCase User-Agent "^httplib" bad_bot


Παραγγελία Allow, Deny
Να επιτρέπεται από όλους
Άρνηση από το env=bad_bot


Η λίστα των «κακών» πρακτόρων χρήστη εδώ είναι πολύ μικρή και δίνεται μόνο ως παράδειγμα.

Ρυθμίσεις PHP

Εκτός από τις μεταβλητές httpd.conf και apache.conf, μπορεί επίσης να χρειαστεί να αλλάξουμε τις τιμές ρυθμίσεων php που καθορίζονται στο php.ini. Το αρχείο .htaccess σας επιτρέπει να κάνετε τόσο ωραία πράγματα. Για αυτό χρησιμοποιούνται οι οδηγίες php_value και php_flag.

Η διαφορά μεταξύ php_value και php_flag: η πρώτη οδηγία εκχωρεί μια συγκεκριμένη τιμή στη ρύθμιση:
php_value
και το δεύτερο ενεργοποιεί ή απενεργοποιεί τη ρύθμιση boolean:
php_flag

ΠΡΟΣΟΧΗ! Δεν μπορείτε να χρησιμοποιήσετε τα php_admin_flag και php_admin_value σε ένα αρχείο .htaccess!

Για παράδειγμα, κωδικός

php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0


θα απενεργοποιήσει την αυτόματη διαφυγή δεδομένων στην PHP (απενεργοποίηση MagicQuotes) και τον κώδικα

php_value memory_limit 64M

θα αντικαταστήσει την τιμή της μέγιστης ποσότητας μνήμης που εκχωρείται για την τοποθεσία.

Αυτές οι τιμές παρακάμπτουν τις τιμές που ορίζονται στο αρχείο php.ini ή τις ορίζουν εάν δεν ορίστηκαν από τον διαχειριστή του διακομιστή φιλοξενίας. Δεν έχει νόημα να καταχωρίσετε ολόκληρη τη λίστα των ρυθμίσεων PHP εδώ - μπορείτε να τη λάβετε από την τεκμηρίωση για την έκδοση PHP που χρειάζεστε.

Επανεγγραφή της ενότητας

Ο διακομιστής Apache περιλαμβάνει τη μονάδα Rewrite. Παρά το γεγονός ότι χρησιμοποιείται στο αρχείο .htaccess, δεν θα το περιγράψουμε τώρα, γιατί Αυτό είναι ένα ξεχωριστό θέμα που αξίζει ξεχωριστό άρθρο.

Σχετικό για: Apache 2.x

Αυτό δεν είναι το μόνο που μπορεί να γίνει με το αρχείο .htaccess. Υπάρχουν πολλά συγκεκριμένα παραδείγματα στο Διαδίκτυο, τα πιο συχνά απαραίτητα παραδείγματα.