Marketing Περιεχόμενο

Οι κανόνες .htaccess του WordPress έχουν επίσης εξαιρέσεις

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

Εάν δεν είστε φανατικός χρήστης του συστήματος διαχείρισης περιεχομένου, δεν πειράζει. Μπορείτε να περάσετε αμέσως μετά από αυτό το άρθρο. Αλλά για τους συναδέλφους μου techno-geek, code-heads και apache-dabblers, θέλω να μοιραστώ κάτι ενδιαφέρον και κάτι δροσερό.

Το Multi-site είναι μια δυνατότητα που σας επιτρέπει να εκτελείτε οποιονδήποτε αριθμό ιστότοπων WordPress με μία εγκατάσταση WordPress. Εάν διαχειρίζεστε πολλούς ιστότοπους, είναι ωραίο γιατί μπορείτε να εγκαταστήσετε μια εγκεκριμένη ομάδα θεμάτων και γραφικών στοιχείων και να τα ενεργοποιήσετε για τους ιστότοπους πελατών σας. Υπάρχουν μερικά τεχνικά εμπόδια για τη χαρτογράφηση των τομέων σας, αλλά η διαδικασία δεν είναι δύσκολη.

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

Ένα άλλο ενδιαφέρον θέμα είναι τι συμβαίνει στο .htaccess αρχείο στον διακομιστή σας Apache. Το WordPress πρέπει να ξαναγράψει τις διαδρομές ανά ιστολόγιο και το κάνει αυτό με έναν κανόνα επανεγγραφής και php αρχείο.

Το WordPress χρησιμοποιεί τον ακόλουθο κανόνα επανεγγραφής:

RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

Κατανεμημένη, αυτό σημαίνει:

  1. RewriteRule – Αυτή η οδηγία λέει στον Apache ότι πρόκειται για έναν κανόνα επανεγγραφής.
  2. ^([_0-9a-zA-Z-]+/)? - Αυτή είναι μια κανονική έκφραση (RegEx) που ταιριάζει με μια σειρά χαρακτήρων που ξεκινά με μια προαιρετική συμβολοσειρά αλφαριθμητικών χαρακτήρων και παύλων ακολουθούμενη από κάθετο. Οι παρενθέσεις υποδεικνύουν μια ομάδα λήψης, πράγμα που σημαίνει ότι το αντιστοιχισμένο κείμενο μπορεί να χρησιμοποιηθεί στη συμβολοσειρά αντικατάστασης.
  3. files/ – Αυτό ταιριάζει με τη συμβολοσειρά "αρχεία/".
  4. (.+) – Αυτή είναι μια άλλη ομάδα λήψης που ταιριάζει με οποιαδήποτε σειρά χαρακτήρων, μία ή περισσότερες φορές.
  5. wp-includes/ms-files.php?file=$2 – Αυτή είναι η συμβολοσειρά αντικατάστασης που αντικαθιστά την αντιστοιχισμένη συμβολοσειρά. Λέει στον Apache να ανακατευθύνει το αίτημα στο "wp-includes/ms-files.php", με την τιμή της δεύτερης ομάδας καταγραφής ($2) ως παράμετρο ερωτήματος που ονομάζεται "αρχείο".
  6. [L] – Αυτή είναι μια σημαία που λέει στον Apache να σταματήσει να επεξεργάζεται τυχόν περαιτέρω κανόνες εάν αυτός ο κανόνας ταιριάζει.

Ουσιαστικά, οτιδήποτε βρίσκεται σε έναν υποκατάλογο του mysite.com/files/directory ξαναγράφεται στο mysite.com/files/wp-includes/myblogfolderpath… και εδώ γίνεται ενδιαφέρον. Τι συμβαίνει εάν πραγματικά χρειαστεί να έχετε ένα αρχείο στον διακομιστή σας που είναι mysite.com/files/myfolder/myimage.jpg; Παίρνετε ένα σφάλμα 404, αυτό συμβαίνει. Ο κανόνας επανεγγραφής Apache ξεκινά και αλλάζει τη διαδρομή.

Βεβαίως, μπορεί να μην αντιμετωπίσετε ποτέ αυτό το πρόβλημα, αλλά το έκανα. Είχα έναν ιστότοπο που έπρεπε να χρησιμοποιήσει ένα widget javascript από έναν άλλο ιστότοπο και χρειάστηκε να βρει γραφικά στο mysite.com/files/Images/myfile. Επειδή δεν υπήρχε τρόπος αλλαγής του αρχείου στον ιστότοπο του κεντρικού υπολογιστή, χρειαζόμουν για να βρω έναν τρόπο να το κάνω αυτό στον διακομιστή μου. Η εύκολη λύση είναι να δημιουργήσετε μια συνθήκη επανεγγραφής που κάνει μια εξαίρεση για συγκεκριμένα αρχεία.

Εδώ είναι η λύση:

RewriteCond %{REQUEST_URI} !/?files/Image/file1.jpg$
RewriteCond %{REQUEST_URI} !/?files/Image/file2.jpg$
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

Κατανεμημένα:

Γραμμή 1:

  1. RewriteCond – Αυτή η οδηγία λέει στον Apache ότι πρόκειται για κανόνα RewriteCond.
  2. %{REQUEST_URI} – Αυτή είναι μια μεταβλητή διακομιστή που περιέχει τη διαδρομή του αιτούμενου URI.
  3. ! – Αυτός είναι ένας τελεστής άρνησης που σημαίνει «όχι». Χρησιμοποιείται για την αναστροφή της συνθήκης.
  4. /?files/Image/file1.jpg$ – Αυτή είναι μια τυπική έκφραση που ταιριάζει με την ακριβή συμβολοσειρά "/files/Image/file1.jpg" στο τέλος του ζητούμενου URI. Το ερωτηματικό και η κάθετο προς τα εμπρός πριν από τα "αρχεία" καθιστούν την πρώτη κάθετο προαιρετική.

Γραμμή 2:

  1. RewriteCond – Αυτή η οδηγία λέει στον Apache ότι πρόκειται για κανόνα RewriteCond.
  2. %{REQUEST_URI} – Αυτή είναι μια μεταβλητή διακομιστή που περιέχει τη διαδρομή του αιτούμενου URI.
  3. ! – Αυτός είναι ένας τελεστής άρνησης που σημαίνει «όχι». Χρησιμοποιείται για την αναστροφή της συνθήκης.
  4. /?files/Image/file2.jpg$ – Αυτή είναι μια τυπική έκφραση που ταιριάζει με την ακριβή συμβολοσειρά "/files/Image/file2.jpg" στο τέλος του ζητούμενου URI. Το ερωτηματικό και η κάθετο προς τα εμπρός πριν από τα "αρχεία" καθιστούν την πρώτη κάθετο προαιρετική.

Γραμμή 3:

  1. RewriteRule – Αυτή η οδηγία λέει στον Apache ότι πρόκειται για έναν κανόνα επανεγγραφής.
  2. ^([_0-9a-zA-Z-]+/)? – Αυτή είναι μια κανονική έκφραση που ταιριάζει με μια σειρά χαρακτήρων που ξεκινά με μια προαιρετική συμβολοσειρά αλφαριθμητικών χαρακτήρων και παύλων ακολουθούμενη από κάθετο. Οι παρενθέσεις υποδεικνύουν μια ομάδα λήψης, πράγμα που σημαίνει ότι το αντιστοιχισμένο κείμενο μπορεί να χρησιμοποιηθεί στη συμβολοσειρά αντικατάστασης.
  3. files/ – Αυτό ταιριάζει με τη συμβολοσειρά "αρχεία/".
  4. (.+) – Αυτή είναι μια άλλη ομάδα λήψης που ταιριάζει με οποιαδήποτε σειρά χαρακτήρων, μία ή περισσότερες φορές.
  5. wp-includes/ms-files.php?file=$2 – Αυτή είναι η συμβολοσειρά αντικατάστασης που αντικαθιστά την αντιστοιχισμένη συμβολοσειρά. Λέει στον Apache να ανακατευθύνει το αίτημα στο "wp-includes/ms-files.php", με την τιμή της δεύτερης ομάδας καταγραφής ($2) ως παράμετρο ερωτήματος που ονομάζεται "αρχείο".
  6. [L] – Αυτή είναι μια σημαία που λέει στον Apache να σταματήσει να επεξεργάζεται τυχόν περαιτέρω κανόνες εάν αυτός ο κανόνας ταιριάζει.

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

Τιμ Πιάτσα

Ο Tim Piazza είναι συνεργάτης του Social LIfe Marketing και ιδρυτής του ProSocialTools.com, μιας μικρής επιχειρηματικής πηγής για την προσέγγιση τοπικών πελατών με τα μέσα κοινωνικής δικτύωσης και το μάρκετινγκ μέσω κινητού τηλεφώνου. Όταν δεν δημιουργεί καινοτόμες λύσεις που επιταχύνουν τις επιχειρηματικές διαδικασίες, στον Tim αρέσει να παίζει μαντολίνο και να κατασκευάζει έπιπλα.

Σχετικά άρθρα

Επιστροφή στην κορυφή κουμπί
Κλεισιμο

Εντοπίστηκε μπλοκ διαφημίσεων

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