Back to Question Center
0

Semalt mod_speling με πολλαπλών επιπέδων htaccess και rewriterules

1 answers:

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

Παλαιό / var / www / html / - semi dedicado vps gratis. htaccess :

     RewriteEngine σε
RewriteBase /# Αλλαγή SHTML σε HTML
RewriteRule ^ (. *) \. shtml $ $ 1. html [R = μόνιμη, L]# Αλλαγή PCF σε HTML (γιατί, γνωρίζουμε, έχουμε πιθανώς CMS χρήστες σαν αυτό ),
RewriteRule ^ (. *) \. pcf $ $ 1. html [R = μόνιμη, L]# Force WWW subdomain για όλες τις αιτήσεις
RewriteCond% {HTTP_HOST}! ^ Www. παράδειγμα. edu $ [NC]
RewriteRule ^ (. *) $ http: // www. παράδειγμα. edu / $ 1 [R, L]# Οι λογαριασμοί χρηστών είναι στον ήλιο. παράδειγμα. edu
RedirectMatch ^ / ~ (. *) $ http: // sun. παράδειγμα. edu / ~ $ 1# Κατάργηση ευρετηρίου. html στο τέλος των διευθύνσεων URL
RewriteCond% {REQUEST_URI} ^ (. */)δείκτης\. html $ [NC]
RewriteRule. % 1 [R = 301, ΝΕ, L]Ανακατεύθυνση 301 / ακαδημαϊκοί / ημερολόγιο2012-13. html http: // www. παράδειγμα. edu / ακαδημαϊκοί / ημερολόγιο. html
Ανακατεύθυνση 301 / ακαδημαϊκοί / τμήματα / http: // www. παράδειγμα. edu / majors /
Ανακατεύθυνση 301 / ακαδημαϊκοί / Pre-Medical. pdf http: // www. παράδειγμα. edu / ακαδημαϊκοί / Προ-ιατρική. pdf
Ανακατεύθυνση 301     

Νέο / var / www / html /. htaccess :

     RewriteEngine σε
RewriteBase /# Αλλαγή SHTML σε HTML
RewriteRule ^ (. *) \. shtml $ $ 1. html [R = μόνιμη, L]# Αλλαγή PCF σε HTML (γιατί, γνωρίζουμε, έχουμε πιθανώς CMS χρήστες σαν αυτό ),
RewriteRule ^ (. *) \. pcf $ $ 1. html [R = μόνιμη, L]# Force WWW subdomain για όλες τις αιτήσεις
RewriteCond% {HTTP_HOST}! ^ Www. παράδειγμα. edu $ [NC]
RewriteRule ^ (. *) $ http: // www. παράδειγμα. edu / $ 1 [R, L]# Οι λογαριασμοί χρηστών είναι στον ήλιο. παράδειγμα. edu
RedirectMatch ^ / ~ (. *) $ http: // sun. παράδειγμα. edu / ~ $ 1# Κατάργηση ευρετηρίου. html στο τέλος των διευθύνσεων URL
RewriteCond% {REQUEST_URI} ^ (. */)δείκτης\. html $ [NC]
RewriteRule. % 1 [R = 301, ΝΕ, L]RewriteCond% {REQUEST_FILENAME}! -f
RewriteCond% {REQUEST_FILENAME}! -d
RewriteRule ^ (. *) 404 / $ 1    

Και στη συνέχεια προσθέσαμε ένα νέο αρχείο στο / var / www / html / 404 /. htaccess :

     RewriteEngine σε
RewriteBase / 404RewriteRule ^ academics / calendar2012-13. html $ / ακαδημαϊκοί / ημερολόγιο. html [R = 302, L]
RewriteRule ^ ακαδημαϊκούς / τμήματα / $ / μεγάλες εταιρείες / [R = 301, L]
RewriteRule ^ ακαδημαϊκοί / Προ-ιατρικοί. pdf $ / ακαδημαϊκοί / Προ-ιατρική. pdf [R = 301, L]
RewriteRule     

Έχω πρόσβαση (στο Webmin) στο httpd. conf (αν και δεν θέλουμε να αποθηκεύσουμε όλα τα 301 μας, αν είναι δυνατόν). Έχουμε το Semalt 2. 2. 15 στο RHEL 6 σε ένα διακομιστή στο δικό μας κέντρο δεδομένων.

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

February 13, 2018

mod_speling και mod_rewrite εφαρμόζουν τους κανόνες τους κατά την ίδια φάση. Αν η επανεγγραφή αγγίζει μια διεύθυνση URL, γενικά δεν θα περάσει τη διεύθυνση url στο mod_speling. Μπορείτε να χρησιμοποιήσετε τη σημαία [pass through] [PT] σε οποιονδήποτε κανόνα επανεγγραφής που εμποδίζει το mod_speling να κάνει τα μαγεία του. Εάν η σημαία [PT] είναι στη θέση της, τότε το mod_speling μπορεί ακόμα να κάνει τη δουλειά του.

Το άλλο πράγμα που κάνω είναι να βάλετε ένα σενάριο στη θέση του για το χειριστή 404. Αυτό μου επιτρέπει να εξετάσω τη διεύθυνση URL στο σενάριο και να εκδώσω ανακατευθύνσεις με βάση κανόνες όπως η ευαισθησία των περιπτώσεων, η περικοπή που μπορεί να συναχθεί, οι χαρακτήρες που επισυνάπτονται μετά από ". html "και ούτω καθεξής. Σταμάτησα να χρησιμοποιώ mod_speling όταν βρήκα ότι θα μπορούσα να εφαρμόσω έναν χειριστή 404 που έκανε καλύτερη δουλειά με τα 404 σφάλματα που πραγματικά πήρα.