Utilia

Γεννήτρια ανακατευθύνσεων .htaccess

Δημιουργήστε ανακατευθύνσεις 301 και 302 για .htaccess ή Nginx, επιβάλετε HTTPS και www, μετακινήστε domain και ελέγξτε για βρόχους και αλυσίδες.

Διακομιστής
Τύπος ανακατεύθυνσης
Κανονική διεύθυνση
Τελική κάθετος
Μετακίνηση ολόκληρου του domain

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

Έλεγχοι

Πώς χρησιμοποιείτε τη γεννήτρια ανακατευθύνσεων .htaccess

  1. Επιλέξτε τον Διακομιστής: Apache (.htaccess) ή Nginx, και μετά τον Τύπος ανακατεύθυνσης: 301 – μόνιμη ή 302 – προσωρινή.
  2. Στις Ανακατευθύνσεις σελίδων (μία ανά γραμμή: παλιά διαδρομή, μετά νέο URL) γράψτε μία ανακατεύθυνση ανά γραμμή: την παλιά διαδρομή, ένα κενό και το νέο URL, για παράδειγμα /old-page.html /new-page/. Λειτουργούν επίσης tab, κόμμα ή ->, και μπορείτε να επικολλήσετε πλήρη παλιά URL ή υπάρχουσες γραμμές Redirect 301 /a /b.
  3. Προαιρετικά εισαγάγετε Το domain σας (προαιρετικό) (για παράδειγμα example.com) ώστε οι ανακατευθύνσεις σελίδων να δείχνουν απευθείας στην τελική διεύθυνση.
  4. Στην Κανονική διεύθυνση επιλέξτε Επιβολή HTTPS και διαλέξτε Επιβολή www, Αφαίρεση www ή Να μείνει το www όπως είναι. Στην Τελική κάθετος επιλέξτε αν θα προστεθεί ή θα αφαιρεθεί.
  5. Αν ολόκληρος ο ιστότοπος μετακινήθηκε, συμπληρώστε το Μετακίνηση ολόκληρου του domain με το Παλιό domain και τη Νέα διεύθυνση (απόλυτο URL), και αφήστε επιλεγμένο το Διατήρηση της διαδρομής ώστε κάθε σελίδα να καταλήγει στην αντίστοιχή της.
  6. Διαβάστε τους Έλεγχοι, και μετά πατήστε Αντιγραφή ή Λήψη για τους κανόνες. Το Φόρτωση παραδείγματος δείχνει μια πλήρη διαμόρφωση.

Πώς λειτουργούν οι κανόνες που δημιουργούνται

Για τον Apache, το εργαλείο γράφει κανόνες mod_rewrite, ξεκινώντας με ένα μόνο RewriteEngine On. Κάθε σελίδα γίνεται ένας RewriteRule με μοτίβο που ξεκινά με ^/?, ώστε να λειτουργεί τόσο σε αρχείο .htaccess (όπου η αρχική κάθετος αφαιρείται) όσο και σε μπλοκ <VirtualHost>. Οι τελείες, οι αγκύλες, τα σύμβολα συν και άλλοι χαρακτήρες κανονικών εκφράσεων στις διαδρομές σας περνούν escaping, και το κενό γίνεται \x20. Στο νέο URL, τα $ και % περνούν escaping επειδή ο Apache θα τα διάβαζε ως οπισθοαναφορές, και η σημαία NE εμποδίζει τον Apache να κωδικοποιήσει το URL δεύτερη φορά.

Ο RewriteRule δεν βλέπει ποτέ το query string. Όταν μια παλιά διεύθυνση περιέχει τέτοιο, όπως /product.php?id=42, το εργαλείο προσθέτει γραμμή RewriteCond %{QUERY_STRING} ^id=42$ και τη σημαία QSD, ώστε οι παλιές παράμετροι να απορρίπτονται αντί να αντιγράφονται στη νέα σελίδα.

Οι κανόνες διατάσσονται ώστε να αποφεύγονται περιττά άλματα: πρώτα η μετακίνηση domain, μετά οι ανακατευθύνσεις σελίδων, μετά η τελική κάθετος και τέλος το HTTPS και το www. Το HTTPS και το www χειρίζονται από έναν κανόνα, ώστε το http://www.example.com να πηγαίνει στο https://example.com με μία ανακατεύθυνση. Όταν το domain σας είναι γνωστό, οι ανακατευθύνσεις σελίδων και καθέτου δείχνουν ήδη στην τελική διεύθυνση HTTPS.

Για το Nginx, το HTTPS, το www και οι μετακινήσεις domain γίνονται ξεχωριστά μπλοκ server με return 301, και οι ανακατευθύνσεις σελίδων γίνονται γραμμές rewrite που επικολλάτε μέσα στο κύριο μπλοκ server. Εκτελούνται πριν από την αντιστοίχιση των location, οπότε υπερισχύουν και του κανόνα τελικής καθέτου. Ένα ? στο τέλος του προορισμού εμποδίζει το Nginx να προσθέσει το παλιό query string όταν δεν πρέπει.

Έλεγχοι που γίνονται

  • Σελίδα που ανακατευθύνεται στον εαυτό της, ή δύο σελίδες που ανακατευθύνονται η μία στην άλλη (βρόχος που καταλήγει σε «πάρα πολλές ανακατευθύνσεις»).
  • Αλυσίδες όπως Α → Β → Γ: κατευθύνετε το Α απευθείας στο Γ, επειδή κάθε επιπλέον άλμα καθυστερεί τους επισκέπτες και σπαταλά το crawl budget.
  • Η ίδια παλιά διεύθυνση δύο φορές, όπου θα ίσχυε μόνο ο πρώτος κανόνας.
  • Προορισμός που δεν είναι ούτε απόλυτο URL ούτε διαδρομή που ξεκινά με /, ή προορισμός http:// ή με λάθος www στο δικό σας domain.
  • Ρύθμιση τελικής καθέτου που θα ανακατεύθυνε ξανά έναν προορισμό ή θα τον έστελνε πίσω στην πηγή του.

Συχνές ερωτήσεις

Να χρησιμοποιήσω 301 ή 302;

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

Πού βάζω το αρχείο .htaccess;

Στον ριζικό φάκελο του ιστότοπου (συχνά public_html ή www), δίπλα στο index.php ή index.html. Το αρχείο που κατεβάζετε ονομάζεται htaccess.txt· μετονομάστε το σε .htaccess ή επικολλήστε τους κανόνες στην αρχή του υπάρχοντος αρχείου σας. Κρατήστε αντίγραφο ασφαλείας του αρχικού.

Γιατί RewriteRule και όχι Redirect 301;

Οι γραμμές Redirect προέρχονται από το mod_alias και εκτελούνται σε διαφορετική φάση από τον RewriteRule. Ο συνδυασμός τους σε ένα αρχείο κάνει τη σειρά δύσκολη να προβλεφθεί. Με μόνο το mod_rewrite όλοι οι κανόνες μένουν σε μία προβλέψιμη ακολουθία και μπορούν να αντιστοιχίζονται και τα query string.

Ο ιστότοπός μου δείχνει «πάρα πολλές ανακατευθύνσεις» μετά την επιβολή HTTPS. Γιατί;

Πίσω από load balancer, CDN ή proxy που τερματίζει το HTTPS, ο Apache βλέπει κάθε αίτημα ως απλό HTTP, οπότε το %{HTTPS} είναι πάντα ανενεργό. Σε αυτή την περίπτωση ελέγξτε την προωθούμενη κεφαλίδα, για παράδειγμα RewriteCond %{HTTP:X-Forwarded-Proto} !https, ή ενεργοποιήστε την ανακατεύθυνση στο CDN.

Αλλάζει αυτό το εργαλείο τον διακομιστή μου;

Όχι. Παράγει μόνο κείμενο στο πρόγραμμα περιήγησής σας. Τίποτα δεν στέλνεται πουθενά και εσείς ελέγχετε πού και πώς θα εγκατασταθούν οι κανόνες.