Ανακατεύθυνση .htaccess: Ανακατεύθυνση σε άλλο τομέα και ανακατεύθυνση σε άλλη σελίδα

  1. Ανακατεύθυνση .htaccess: μόνιμη ανακατεύθυνση, 301
  2. Πώς να ρυθμίσετε μια ανακατεύθυνση σε www (ή χωρίς www)
  3. Πώς να δημιουργήσετε το .htaccess
  4. Το αρχείο .htaccess δεν λειτουργεί
  5. Υπάρχει κάποιο ανάλογο του .htaccess στο nginx;
  6. Εκδότης
  7. x64 (aka andi)

Καλή Κυριακή!

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

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

Ας δούμε τι πραγματικά δεν είναι αυτά τα προβλήματα

Ανακατεύθυνση .htaccess: μόνιμη ανακατεύθυνση, 301

Αυτό το πράγμα έχει διαφορετικά ονόματα. Το Neponyatki μπορεί να προκαλέσει ίσως αυτόν τον αριθμό - γιατί είναι 301; Η ουσία έγκειται στο ίδιο το πρωτόκολλο HTTP, το οποίο ανταποκρίνεται σε αιτήματα πελατών με συγκεκριμένο κωδικό κατάστασης. Ο κώδικας 404 Not Found είναι γνωστός σχεδόν σε όλους. Ο 200 κωδικός OK είναι σχεδόν άγνωστος, αλλά σημαίνει ότι όλα είναι εντάξει και το έγγραφο θα εμφανιστεί στο πρόγραμμα περιήγησης. Αλλά ο κώδικας 301 Moved Permanently σημαίνει ότι το έγγραφο τελικά μεταφέρθηκε σε μια νέα διεύθυνση. Αυτό είναι αυτό που ονομάζεται συχνά ανακατεύθυνση, παρόλο που η συνολική ομάδα απόκρισης ορίζεται ως - 3xx: Ανακατεύθυνση .

Το Apache διαθέτει πολλές επιλογές για ανακατευθύνσεις. Η ενότητα mod_rewrite παρέχει έναν εξαιρετικό μηχανισμό για εργασία με ανακατευθύνσεις και στο μέλλον θα την χρησιμοποιήσω στα παραδείγματα. Η ενότητα mod_alias έχει επίσης οδηγίες για ανακατευθύνσεις από μια συγκεκριμένη διεύθυνση ή από μια διεύθυνση που ταιριάζει με την κανονική έκφραση:
Ανακατεύθυνση μόνιμου / http://newsite.ru/
RedirectMatch μόνιμο. * Http://newsite.ru/
Αλλά το mod_rewrite έχει πρόσθετες επιλογές για ανακατεύθυνση, επομένως είναι καλύτερο να το χρησιμοποιήσετε (IMHO).

Σε γενικές γραμμές, για μια αναντιστοιχία εξωτερικού (ας το ονομάσουμε χρήστη), στην οποία το πρόγραμμα περιήγησης ανακατευθύνει αυτόματα σε άλλη σελίδα, συνήθως ανεπαίσθητα για τον χρήστη (η γραμμή διευθύνσεων αλλάζει), μπορείτε να βάλετε αυτόν τον κώδικα στο .htaccess:
RewriteEngine On
RewriteRule. * Http://newsite.ru/ [L, R = μόνιμη]
Εδώ, η πρώτη γραμμή περιλαμβάνει τον μηχανισμό της module mod_rewrite , η οποία επιτρέπεται να κάνει οτιδήποτε με τις διευθύνσεις. Ας ονομάσουμε αυτή τη μετατροπή διευθύνσεων URL από τις συνθήκες που ισχύουν. Η δεύτερη γραμμή ορίζει απευθείας τον κανόνα μετατροπής · στο παραπάνω παράδειγμα, όλα τα αιτήματα θα μεταφερθούν στη διεύθυνση http://newsite.ru/. Οι σημαίες τοποθετούνται σε αγκύλες: L - τελευταίος (τελευταίος) κανόνας, R - τύπος ανακατεύθυνσης (Ανακατεύθυνση), υποδεικνυόμενος ως R = κωδικός, όπου ο κωδικός είναι αλφαβητικός ή αριθμητικός χαρακτήρας (μόνιμος ή 302).

Στην πραγματικότητα, το mod_rewrite είναι ένα πολύ χρήσιμο πράγμα, γιατί οφείλεται στο γεγονός ότι πολλοί κινητήρες χρησιμοποιούν ενεργά το λεγόμενο CNC (Human URL Understandable). Εάν δεν είστε εξοικειωμένοι με αυτόν τον όρο, θα σας εξηγήσω με ένα παράδειγμα. Άρθρο σχετικά χωρίς κινητήρες για την περιοχή έχει τη διεύθυνση: https://a-panov.ru/2014/11/free-cms/

Κοιτάζοντας αυτή τη διεύθυνση URL, είναι αμέσως σαφές ότι το άρθρο δημοσιεύθηκε τον Νοέμβριο του 2014. Αφαιρώντας τον τίτλο με μια κάθετη κάθετο - https://a-panov.ru/2014/11/ - θα λάβουμε μια λίστα με όλη τη δημοσίευση για τον Νοέμβριο. Κανονικές διευθύνσεις, πληκτρολογήστε:

https://a-panov.ru/?p=389

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

Αυτή η μέθοδος είναι καλή όταν δεν ενδιαφέρεστε σε ποια σελίδα του νέου ιστότοπου θα συνδεθείτε. Αν όμως μετακινηθήκατε σε άλλο τομέα, καλό είναι να ανακατευθύνετε όλα τα αιτήματα ενώ διατηρείτε τις διευθύνσεις. Για να το κάνετε αυτό, χρησιμοποιήστε τον ακόλουθο κώδικα:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = μόνιμη]
Η νέα σημαία QSA θα αποθηκεύσει επίσης τις παραμέτρους που μπορούν να βρεθούν στις διευθύνσεις μετά το ερωτηματικό. Στο ήδη γνωστό παράδειγμα:

https://a-panov.ru/?p=389

εάν τοποθετήσω τον κώδικα στο .htaccess παραπάνω, τότε θα υπάρξει μια ανακατεύθυνση στη διεύθυνση http://newsite.ru/?p=389 η οποία χωρίς αυτήν τη σημαία δεν θα υπήρχε.

Στο εξής θα παραλείψω την οδηγία για την ενσωμάτωση μετασχηματισμού:
RewriteEngine On
απλά θυμηθείτε: αν χρησιμοποιείτε το μηχανισμό mod_rewrite, τότε όλες οι συνθήκες / μετατροπές πρέπει να πραγματοποιηθούν μετά από αυτήν την οδηγία. Για την απενεργοποίηση χρησιμοποιείται η ακόλουθη γραμμή:
RewriteEngine Απενεργοποιημένο
Συνεπώς, για κάθε κανόνα δεν υπάρχει ανάγκη συνεχούς "ενεργοποίησης" των μετασχηματισμών - αρχίζει να γίνεται αυτόματα, αμέσως μετά την πρώτη οδηγία.

Πώς να ρυθμίσετε μια ανακατεύθυνση σε www (ή χωρίς www)

Τέτοιες ανακατευθύνσεις απαιτούνται για περιπτώσεις όπου ο ιστότοπος είναι διαθέσιμος στις επιλογές nsite.ru και www.nsite.ru, στην περίπτωση αυτή οι μηχανές αναζήτησης τις θεωρούν διπλές και μπορούν είτε να επιλέξουν μία από τις επιλογές ως κύριο κάτοπτρο , ή στην αναζήτηση θα υπάρχουν επιλογές και από τους δύο τομείς. Γενικά, αυτός είναι ένας αρνητικός παράγοντας κατά την κατάταξη μιας τοποθεσίας.

Ευκολότερη επιλογή για έναν τομέα. Η ανακατεύθυνση γίνεται από τον υποτομέα www.site.ru στη διεύθυνση site.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \. $ $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = μόνιμη]
Εκεί εμφανίστηκε η νέα οδηγία RewriteCond , η οποία καθορίζει την κατάσταση υπό την οποία πρέπει να λειτουργούν οι ανακατευθύνσεις - οι κανόνες RewriteRule . Η προϋπόθεση, στην περίπτωση αυτή, το όνομα τομέα που αντιστοιχεί στο www.nsite.ru (σε κανονικές εκφράσεις, το σύμβολο κουκίδας σημαίνει "οποιοσδήποτε χαρακτήρας", επομένως είναι σκόπιμο να τον προστατέψετε με μια ανάστροφη κάθετο).

Η αντίστροφη ανακατεύθυνση είναι επίσης πολύ απλή:
RewriteCond% {HTTP_HOST} ^ nsite \. $ $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = μόνιμη]
Και οι δύο επιλογές λειτουργούν, αλλά έχουν ένα μικρό αρνητικό - για κάθε νέο config είναι απαραίτητο να αντικαταστήσετε τον τομέα nsite.ru με τον δικό σας. Είναι δυνατή η δημιουργία μιας μοναδικής επιλογής; Εύκολα!

Ανακατεύθυνση από οποιοδήποτε υποτομέα www:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = μόνιμη]

Ανακατεύθυνση σε υποτομέα με www:
RewriteCond% {HTTP_HOST}! ^ ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = μόνιμη]

% {HTTP_HOST} - τρέχων τομέας

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

Τέτοιες ερωτήσεις προκύπτουν επίσης. Το πρόβλημα είναι ότι ο τυπικός Explorer (η εφαρμογή στα Windows που είναι υπεύθυνος για τη γραφική διεπαφή) δεν σας επιτρέπει να δημιουργείτε αρχεία που ξεκινούν με μια τελεία (δημιουργία αρχείων ή φακέλων κάνοντας δεξί κλικ στην επιφάνεια εργασίας ή σε ένα παράθυρο και επιλέγοντας την επιθυμητή ενέργεια από τη λίστα Δημιουργία ). Αλλά υπάρχει μια διέξοδος: ανοίξτε το τυπικό recorder Notepad, επιλέξτε Αρχείο → Αποθήκευση ως ... στο μενού και καθορίστε το .htaccess ως το όνομα του αποθηκευμένου αρχείου - μετά από αυτό θα δημιουργηθεί.

Το αρχείο .htaccess δεν λειτουργεί

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

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

Είναι επίσης πιθανό ότι το Apache δεν χρησιμοποιείται στον διακομιστή, για παράδειγμα, το IIS είναι ο κύριος "επισκέπτης" στη φιλοξενία των Windows. Για διευκρίνιση, επικοινωνήστε με την υποστήριξη του υπάλληλό σας.

Υπάρχει κάποιο ανάλογο του .htaccess στο nginx;

Μια άλλη αρκετά συχνή ερώτηση. Σε αυτόν τον διακομιστή ιστού, αυτό δεν είναι δυνατό. Ωστόσο, αυτό συνήθως δεν απαιτείται. Το γεγονός είναι ότι το nginx συνήθως εγκαθίσταται ως frondend, δηλαδή δέχεται και επεξεργάζεται όλες τις αιτήσεις που είτε εκτελεί είτε ανακατευθύνει στο backend, το οποίο μπορεί να εκτελεστεί από το Apache, το οποίο μπορεί να διαμορφωθεί περαιτέρω χρησιμοποιώντας το .htaccess.

Εκδότης

δεν είναι online 1 ημέρα

x64 (aka andi)

Σχόλια: 2834 Δημοσιεύσεις: 394 Εγγραφή: 02-04-2009