Ευχάριστο για έναν άντρα ucp php ανακατεύθυνση. PHP ανακατεύθυνση εξωτερικών συνδέσμων. Ανακατεύθυνση με καθυστέρηση και χρονόμετρο αντίστροφης μέτρησης. Απόκρυψη συνδέσμων παραπομπής

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

Τι είδους ανακατεύθυνση;

Στον προγραμματισμό ιστού, προκύπτουν καταστάσεις όταν χρειάζεται να ανακατευθύνετε έναν χρήστη ακολουθώντας έναν σύνδεσμο σε άλλη διεύθυνση. Φυσικά, με την πρώτη ματιά, η εφαρμογή μιας τέτοιας ανακατεύθυνσης φαίνεται λίγο «παράνομη». Στην πράξη, μια τέτοια ανακατεύθυνση είναι σε ζήτηση όχι μόνο μεταξύ των εισβολέων, αλλά και μεταξύ των ειλικρινών webmasters:

Σε ποιες περιπτώσεις μπορεί να απαιτείται ανακατεύθυνση:

  • Όταν αντικαθίσταται η μηχανή τοποθεσίας, η αρχιτεκτονική ολόκληρου του πόρου αλλάζει ως αποτέλεσμα. Τότε προκύπτει το πρόβλημα του πώς να κάνετε μια ανακατεύθυνση.
  • Όταν η δομή ενός πόρου επανασχεδιάζεται, προστίθενται, διαγράφονται ή μεταφέρονται ολόκληρες ενότητες ή ένα υλικό. Ενώ συμβαίνει αυτή η διαδικασία, είναι προσωρινά δυνατή η ανακατεύθυνση του χρήστη στην επιθυμητή ενότητα.
  • Εάν ο ιστότοπος άλλαξε πρόσφατα όνομα τομέα– μετά την αλλαγή του ονόματος τομέα, το παλιό θα εξακολουθεί να εμφανίζεται στα αποτελέσματα αναζήτησης για κάποιο χρονικό διάστημα. Σε αυτήν την περίπτωση, ο χρήστης θα ανακατευθυνθεί αυτόματα στον νέο τομέα από τη μηχανή αναζήτησης.
  • Κατά τη διαδικασία εξουσιοδότησης, κατά κανόνα, σε έναν μεγάλο ιστότοπο υπάρχουν δύο ομάδες χρηστών: απλοί επισκέπτες και διαχειριστές πόρων. Σε αυτήν την περίπτωση, είναι λογικό να υλοποιηθεί μια ανακατεύθυνση για κάθε χρήστη σύμφωνα με τα δικαιώματα και τον ρόλο του. Μετά την εξουσιοδότηση, ο διαχειριστής ή οι συντονιστές του ιστότοπου μεταβαίνουν στο διαχειριστικό τμήμα του πόρου και οι επισκέπτες πηγαίνουν στο τμήμα χρήστη του πόρου.
Δυνατότητες ανακατεύθυνσης σε php

Σε αντίθεση με άλλους php γλώσσεςέχει ορισμένα πλεονεκτήματα στην υλοποίηση μιας ανακατεύθυνσης:

  • Η Php είναι μια γλώσσα προγραμματισμού από την πλευρά του διακομιστή. Επομένως, η ανακατεύθυνση δεν θα γίνει στον κώδικα html των σελίδων που εμφανίζονται στο πρόγραμμα περιήγησης, αλλά σε ένα σενάριο που φιλοξενείται στον διακομιστή.
  • Η ανακατεύθυνση σε php μπορεί να υλοποιηθεί με διάφορους τρόπους. Το οποίο επεκτείνει σημαντικά την εφαρμογή του.
  • Λόγω της επεξεργασίας δεδομένων στον διακομιστή, η ανακατεύθυνση που υλοποιείται με χρήση PHP είναι λιγότερο επιρρεπής σε φίλτρα μηχανές αναζήτησης.

Για ανακατεύθυνση στην PHP, χρησιμοποιείται η συνάρτηση header(). Χρησιμοποιείται για την αποστολή της κεφαλίδας http. Η σύνταξή του είναι:

void header(string $string [, bool $replace = true [, int $http_response_code ]])

Ορίσματα που γίνονται δεκτά από τη συνάρτηση:


  • string $string – συμβολοσειρά κεφαλίδας;

Υπάρχουν δύο τύποι αυτού του επιχειρήματος. Το πρώτο είναι για την αποστολή του κωδικού κατάστασης σύνδεσης. Ξεκινά με "HTTP/". Ο άλλος τύπος στέλνει έναν κωδικό κατάστασης (REDIRECT 302) στο πρόγραμμα περιήγησης πελάτη μαζί με την κεφαλίδα. Αυτό το όρισμα ξεκινά με "Τοποθεσία:"


  • Το bool $replace είναι ένα προαιρετικό χαρακτηριστικό του τύπου bool . Υπεύθυνος για την παράκαμψη της προηγούμενης κεφαλίδας. Εάν οριστεί σε true , η προηγούμενη κεφαλίδα ή οι κεφαλίδες του ίδιου τύπου θα αντικατασταθούν. Εάν το όρισμα οριστεί σε false, τότε η κεφαλίδα δεν θα ξαναγραφεί. Από προεπιλογή, αυτή η τιμή έχει οριστεί σε true ;
  • http_response_code – το όρισμα επιβάλλει τον κώδικα απόκρισης HTTP. Η εγκατάσταση του κώδικα θα είναι επιτυχής με την προϋπόθεση ότι το όρισμα συμβολοσειράς δεν είναι κενό.

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

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


Χρησιμοποιώντας την ανακατεύθυνση header().

Για επίδειξη της λειτουργίας σε τοπικός διακομιστήςπρέπει να δημιουργήσετε δύο αρχεία. Ας ονομάσουμε ένα από αυτά redirect.php και το άλλο redirect2.php. Μέσα στην πρώτη θα πραγματοποιήσουμε μια κλήση συνάρτησης με την ακόλουθη μορφή:

Σε άλλο αρχείο βάζουμε τη γραμμή:

echo "Γεια σας! Βρίσκεστε στο αρχείο redirect2.php";


Μερικά ακόμη πρακτικά παραδείγματα χρήσης ανακατεύθυνσης σε php:

  • Αναγκαστική μεταφορά κωδικού κατάσταση http– όταν χρησιμοποιείται το πρώτο όρισμα της συνάρτησης header() τύπου "location", από προεπιλογή ο κωδικός κατάστασης "302" (προσωρινά μετακινήθηκε) μεταβιβάζεται στην κεφαλίδα. Αυτό μπορεί να αποτελέσει πρόβλημα κατά τη μετακίνηση ενός πόρου σε άλλο όνομα τομέα. Στις μηχανές αναζήτησης, μια τέτοια προσωρινή ανακατεύθυνση μπορεί να διαρκέσει πολύ. Εξάλλου, η μηχανή αναζήτησης αναλύει συνεχώς τον κωδικό κατάστασης. Και λέει "προσωρινά μετακόμισε". Παράδειγμα αναγκαστικής επανεγγραφής του κωδικού κατάστασης "302" σε "301" (μετακινήθηκε μόνιμα):

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

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

Πιέστε με

Κωδικός αρχείου Redirect3.php:


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

Τελευταία τροποποίηση στις 25 Φεβρουαρίου 2017 από Vincy.

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

Η PHP παρέχει προκαθορισμένη συνάρτηση, με όνομα header(), για ανακατεύθυνση URL. Χρησιμοποιώντας αυτήν τη συνάρτηση header(), πρέπει να στείλουμε την κεφαλίδα τοποθεσίας καθορίζοντας τη διεύθυνση URL στην οποία θα πρέπει να ανακατευθυνθεί η σελίδα.

Σε αντίθεση με όπου υπάρχουν διάφοροι τρόποι χειρισμού εργασιών ανακατεύθυνσης URL με βάση το πρόγραμμα περιήγησης, η PHP αποφεύγει τέτοια σύγχυση και έχει λειτουργία header() δημιουργήστε τοίδιο αποτέλεσμα σε όλα τα προγράμματα περιήγησης. Μόνο για αυτό, καταλήξαμε στο άρθρο ανακατεύθυνσης JavaScript ότι η ανακατεύθυνση από την πλευρά του διακομιστή είναι προτιμότερη.

Επικεφαλίδα σύνταξης ανακατεύθυνσης PHP ("Τοποθεσία: target-url");

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

Σημείωση: Πριν καθορίσετε τη διεύθυνση URL σελίδας για την κεφαλίδα τοποθεσίας, θα πρέπει να βεβαιωθούμε ότι η σελίδα υπάρχει.

Προσοχή πριν την ανακατεύθυνση

Πριν εκτελέσουμε την ανακατεύθυνση της PHP, θα πρέπει να βεβαιωθούμε ότι δεν αποστέλλεται έξοδος στο πρόγραμμα περιήγησης πριν από τη γραμμή όπου καλούμε τη συνάρτηση header(). Για παράδειγμα,

Echo "PHP Redirect"; header("Τοποθεσία: τοποθεσία");

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

Προειδοποίηση: Δεν είναι δυνατή η τροποποίηση των πληροφοριών κεφαλίδας - οι κεφαλίδες έχουν ήδη αποσταλεί από (...

Δεν ισχύει μόνο για τη συνάρτηση κεφαλίδας, αλλά για όλες τις συναρτήσεις PHP όπως set_cookie(), session_start() κ.λπ., οτιδήποτε μπορεί να τροποποιήσει την κεφαλίδα. Για αυτό, θα πρέπει να αφαιρέσουμε όλο το περιεχόμενο που θα σταματήσει να στέλνει την κεφαλίδα τοποθεσίας στο πρόγραμμα περιήγησης.

Πιθανοί τρόποι αποστολής εξόδου
  • Περιεχόμενο HTML όπως κείμενο ή ετικέτες.
  • Περιττά λευκά κενά πριν από οριοθέτες PHP.
  • Σφάλμα PHP ή προειδοποιητικές ειδοποιήσεις που εμφανίζονται πριν από την ανακατεύθυνση κλήσης.
  • PHP , like, echo(), print().
Μέτρα ασφαλείας από την έξοδο που αποστέλλονται πριν από την ανακατεύθυνση PHP
  • Δεδομένου ότι το περιεχόμενο HTML πρέπει να αποσταλεί πριν από την ανακατεύθυνση, μπορούμε να διαχωρίσουμε τη λογική PHP από το περιεχόμενο HTML.
  • Για να είμαστε στην πλευρά της ασφάλειας μπορούμε να βάλουμε έξοδοςεντολή μετά τη δήλωση ανακατεύθυνσης του αρχείου PHP. Για παράδειγμα, header("Location: site"); έξοδος;
  • Μπορούμε να ενεργοποιήσουμε την προσωρινή μνήμη εξόδου PHP για να σταματήσει η αποστολή εξόδου στο πρόγραμμα περιήγησης και να αποθηκευτεί σε μια προσωρινή μνήμη.

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

Βασικοί τελεστές κανονικές εκφράσεις

Αρχικά, ας δούμε τους βασικούς τελεστές τυπικής έκφρασης (σημαίες, τροποποιητές, ειδικοί χαρακτήρες):

Ειδικοί χαρακτήρες:

  • ^ — αριστερό όριο (αρχή γραμμής).
  • $ — περιορισμός στα δεξιά (τέλος γραμμής).
  • .
  • - οποιοδήποτε σύμβολο,
  • () - μεταβλητή;
  • \ — διαφυγή (ο χαρακτήρας μετά το \ θεωρείται κανονικός χαρακτήρας, όχι ειδικός χαρακτήρας).
  • — εύρος τιμών·

!

  • - ειδικός αρνητικός χαρακτήρας.
  • Τροποποιητές:
  • ?
— το σύμβολο επαναλαμβάνεται 0 ή 1 φορά.

+ — 1 ή περισσότεροι χαρακτήρες (έως 65536). * - 0 ή περισσότεροι χαρακτήρες (έως 65536).Πώς να ρυθμίσετε το 301 htaccess redirect

Τι γίνεται όμως αν «Ω, τι στο διάολο; Αν ασχοληθώ με τις ανακατευθύνσεις, απλώς θα χάσω χρόνο!»; Μπορείτε να το κάνετε αυτό, ΑΛΛΑ... το ιστορικό της «παλιάς» σελίδας θα χαθεί και η «νέα» θα ταξινομηθεί «από την αρχή». Ως αποτέλεσμα, υπάρχει απώλεια θέσεων και μάζας συνδέσμων (αυτό είναι στην καλύτερη περίπτωση).

Επιλογές για τη χρήση ανακατευθύνσεων 301:

  • Συγχώνευση τομέα;
  • Μετακίνηση του ιστότοπου σε άλλη διεύθυνση (μπορεί να είναι χρήσιμο εάν ο ιστότοπος εμπίπτει σε οποιοδήποτε φίλτρο).
  • Για να αυξήσετε το TCI, τους δείκτες PR και να αυξήσετε την επισκεψιμότητα κατά την αγορά άλλου τομέα (ρυθμίστε μια ανακατεύθυνση σε έναν πόρο που χρειάζεται να αυξήσει το TCI και το PR).
  • Όταν αλλάζετε τη μηχανή του ιστότοπου (σε αυτήν την περίπτωση, απαιτείται αυστηρά η ρύθμιση ανακατευθύνσεων 301, διαφορετικά είναι εγγυημένη η πλήρης απώλεια επισκεψιμότητας).
  • κατά τη μετάβαση από http σε https;
  • κόλληση «παίρνει»

κ.λπ., δεν μπορούν να αναφέρονται όλοι οι λόγοι.

301 Ανακατεύθυνση κατά την αλλαγή του τομέα της κύριας τοποθεσίας

Έτσι, αποφασίσατε να αλλάξετε τον τομέα σας. Παρέχουμε άμεσα μια έτοιμη λύση:

Πράκτορας χρήστη: Yandex

Διοργανωτής:newsite.com

  • ρυθμίστε μια ανακατεύθυνση 301 για όλες τις σελίδες του ιστότοπου (εκτός από το αρχείο robots.txt) χρησιμοποιώντας τον παρακάτω κώδικα:

RewriteCond %(REQUEST_FILENAME) robots.txt$

RewriteRule ^([^/]+) $1 [L]

RewriteCond %(HTTP_HOST) !^www\.site\.com

301 ανακατεύθυνση κατά την αλλαγή της διεύθυνσης της σελίδας

Μια ανακατεύθυνση σελίδας (όταν αλλάζει η διεύθυνση σελίδας) πραγματοποιείται χρησιμοποιώντας τον παρακάτω κώδικα:

RewriteEngine On

RewriteCond %(HTTP_HOST) ^www\.stokrat\.org$

RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.site/newpage/

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

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

Αναφέρετε το www. στη διεύθυνση τομέα δεν ήταν σχετική εδώ και πολύ καιρό. Ωστόσο, οι ιστότοποι με www. πλήρης. Συγχώνευση τομέων από το www. και χωρίς πρέπει να γίνεται με αυστηρά υποχρεωτικό τρόπο, γιατί Οι μηχανές αναζήτησης αντιλαμβάνονται αυτούς τους 2 τομείς ως 2 διαφορετικούς ιστότοπους με διαφορετικό TCI, PR, επισκεψιμότητα, μάζα συνδέσμων και οτιδήποτε άλλο. Επομένως, ένα από αυτά είναι το πρωτότυπο και το δεύτερο είναι ένας «απατεώνας» με «κλεμμένο περιεχόμενο». Για να μην συμβεί αυτό - τομείς με www. και χωρίς αυτό είναι απαραίτητο να το "κολλήσετε" χρησιμοποιώντας 301 ανακατευθύνσεις. Ο κωδικός εγκατάστασης είναι παρακάτω.

Ο κώδικας ανακατεύθυνσης από www σε μη www στο htaccess μοιάζει με αυτό:

RewriteEngine ενεργοποιημένο
RewriteCond %(HTTP_HOST) ^www.site.ru$

Τώρα ας καταλάβουμε τις οδηγίες.

Το RewriteEngine on/off - σε απλή ανθρώπινη γλώσσα - χρησιμεύει ως διακόπτης για 301 ανακατευθύνσεις.

RewriteCond - αυτή η οδηγία καθορίζει τις προϋποθέσεις για την «ενεργοποίηση» της επόμενης οδηγίας.

Το RewriteRule είναι μια οδηγία για τη μετατροπή μιας διεύθυνσης σε άλλη.

Ρυθμίστε την ανακατεύθυνση 301 από το http στο https μέσω htaccess

Η μετάβαση από το http στο https θεωρείται από πολλούς ως μια «μοντέρνα τάση». Ωστόσο, σήμερα αυτό το μέτροείναι υποχρεωτικό (αν και τυπικά δεν είναι). Και τώρα έφτασε η ώρα που λάβατε ένα πιστοποιητικό SSL, ο ιστότοπός σας λειτουργεί ήδη τόσο σε http όσο και σε https. Το μόνο που μένει να διαμορφωθεί στο αρχείο .htaccess είναι μια ανακατεύθυνση 301 από τις εκδόσεις http σε https των σελίδων του ιστότοπου. Ο κωδικός διαμόρφωσης δίνεται παρακάτω.

RewriteRule ^(.*)$ https://site.ru/$1

Και εδώ είναι ο κώδικας για μια αντίστροφη ανακατεύθυνση από το https στο http. Όπως μπορείτε να δείτε, η διαφορά είναι μόνο 1 χαρακτήρας:

RewriteCond %(SERVER_PORT) !^443$

RewriteRule ^(.*)$ http://site.ru/$1

Ανακατεύθυνση από σελίδες index.php, index.html

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

Δεδομένου ότι τα index.php και index.html αναφέρονται στον υπότιτλο, ήδη μαντέψατε ότι με τη βοήθεια 301 ανακατευθύνσεων θα απαλλαγούμε από τα διπλότυπα της κύριας σελίδας:

Ωστόσο, εάν η κύρια σελίδα έχει ένα αντίγραφο της φόρμας site.ru/index.php, είναι πιθανό οι υπόλοιπες σελίδες να έχουν επίσης αντίγραφα της φόρμας site.ru/index.php/page.html (με την αρχική διεύθυνση τοποθεσίας .ru/page.html ). Αυτό είναι κακό, επομένως απαιτεί επίσης τη ρύθμιση μιας ανακατεύθυνσης 301 χρησιμοποιώντας τον παρακάτω κώδικα:

RewriteRule ^index\.php/(.*)$ /$1

Υπάρχουν συχνά περιπτώσεις που η κύρια σελίδα έχει διπλότυπη προβολή

site.ru/main.html, για το οποίο είναι επίσης απαραίτητο να καταχωρήσετε 301 ανακατευθύνσεις στο site.ru:

RewriteEngine On

RewriteCond %(THE_REQUEST) ^(3,9)\ /main\.html\ HTTP/

Ή εναλλακτική λύση:

Ανακατεύθυνση 301 /main.html HYPERLINK "http://site.ru/" http:// τοποθεσία. ru/

Ας εξετάσουμε τώρα την αντίθετη κατάσταση - όταν θέλετε να συγχωνεύσετε διπλότυπα ρυθμίζοντας την ανακατεύθυνση από το site.ru στο site.ru/main.html. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τον παρακάτω κώδικα.

RewriteCond %(REQUEST_URI) (.*/[^/.]+)($|\?)

RewriteRule .* %1.html

RewriteRule ^(.*)/$ /$1.html

Λοιπόν, εάν είναι σημαντικό για εσάς να εμφανίζονται οι διευθύνσεις όλων των εσωτερικών σελίδων χωρίς .html στο τέλος, τότε η ανακατεύθυνση διαμορφώνεται με τον ακόλουθο κώδικα:

RewriteCond %(REQUEST_URI) \.html$

RewriteRule ^(.*)\.html$ /$1

Τώρα για το πώς να κάνετε μια ανακατεύθυνση από σελίδα σε σελίδα, συγκεκριμένα από.htm στο pages.html. Για να ρυθμίσετε μια τέτοια ανακατεύθυνση, απλώς προσθέστε τον ακόλουθο κώδικα στο .htaccess:

RewriteRule ^(.*)\.htm$1.html

Ανακατευθύνσεις από διευθύνσεις με και χωρίς κάθετες στο τέλος

Αρχικά, ας δούμε έναν άλλο τύπο διπλότυπων σελίδων - σελίδες όπως http://site.xyz/page και http://site.xyz/page/ - εκτός από την κάθετο στο τέλος, δεν διαφέρουν. Μπορείτε να διαμορφώσετε την ανακατεύθυνση από το πρώτο στο δεύτερο και από το δεύτερο στο πρώτο. Ας εξετάσουμε και τις δύο επιλογές:

Ανακατεύθυνση από http://site.xyz/page στο http://site.xyz/page/:

RewriteCond %(REQUEST_FILENAME) !-f

RewriteCond %(REQUEST_URI) !\..+$

RewriteCond %(REQUEST_URI) !/$

RewriteRule (.*) http://www.site.ru/$1/

Ανακατεύθυνση από http://site.xyz/page/ στο http://site.xyz/page:

RewriteCond %(REQUEST_FILENAME) !-d

RewriteCond %(REQUEST_URI) ^(.+)/$

RewriteRule ^(.+)/$ /$1

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

Ανακατεύθυνση στην έκδοση για κινητά του ιστότοπου

Φυσικά, εάν ο ιστότοπός σας λειτουργεί Μηχανή WordPressή Joomla, τότε μπορείτε να ρυθμίσετε μια ανακατεύθυνση στην έκδοση για κινητά του ιστότοπου χρησιμοποιώντας πρόσθετα.

Ωστόσο, η Google είναι υποστηρικτής προσαρμοστικός σχεδιασμός. Επομένως, δεν χρειάζεται να εκχωρήσετε ξεχωριστό τομέα/υποτομέα για την έκδοση για κινητά. Εκείνοι. Η Google ισχυρίζεται ότι «αν είναι δυνατό να γίνει χωρίς ανακατευθύνσεις στην έκδοση για κινητά, αυτό ακριβώς πρέπει να κάνετε».

Αλλά τι να κάνετε εάν εξακολουθείτε να μην μπορείτε να κάνετε χωρίς τέτοιες ανακατευθύνσεις;

Μπορείτε να διαμορφώσετε μια ανακατεύθυνση μέσω του αρχείου .htaccess

RewriteEngine On

RewriteCond %(HTTP_ACCEPT) "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml"

RewriteCond %(REQUEST_URI) ^/$

RewriteRule ^ http://m.domain.com%(REQUEST_URI)

Ρύθμιση ανακατεύθυνσης για κινητά μέσω PHP

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

$detect = νέο Mobile_Detect;

if ($detect->isMobile()) (// κωδικός)

if ($detect->isTablet()) (//code)

if ($detect->isiOS()) (//code)

if ($detect->isAndroidOS()) (//code)

Από αυτόν τον κωδικό γίνεται φανερό ότι είναι δυνατή η αναγνώριση όχι μόνο ενός υπολογιστή/smartphone/tablet, αλλά και του λειτουργικού του συστήματος.

Ανακατεύθυνση JavaScript

Ο παρακάτω κώδικας ανακατευθύνεται στον υποτομέα για κινητά. Η βάση για την ανακατεύθυνση είναι η ανάλυση οθόνης - πλάτος έως και 480 pixel. Μόνο σε πλάτος, όχι σε ύψος.

  • εάν (οθόνη.πλάτος ενεργοποιημένη

    Μέθοδος 2. Ρύθμιση ανακατεύθυνσης στο site.com μέσω .htaccess εισάγοντας αυτόν τον κώδικα:

    RewriteCond %(QUERY_STRING) ^route=common/home$

    RewriteRule ^index\.php$ http://site.com/?

    Με τον ίδιο (δηλαδή, τον δεύτερο) τρόπο, μπορείτε να ρυθμίσετε ανακατευθύνσεις από παλιές διευθύνσεις κατηγορίας σε νέες. Από προεπιλογή, οι διευθύνσεις συνδέσμων στο OpenCart μοιάζουν κάπως έτσι:

    site.com/index.php?path=83_94_113&route=product/category

    Είναι πολύ οδυνηρό να βλέπεις τέτοιους συνδέσμους, και με την κυριολεκτική έννοια, γιατί... Τα μάτια μου πραγματικά αρχίζουν να πονάνε όταν βλέπω τέτοιες διευθύνσεις. Στο ίδιο .htaccess μπορείτε να διαμορφώσετε μια ανακατεύθυνση σε "ανθρώπινες" διευθύνσεις όπως site.com/category χρησιμοποιώντας τον ακόλουθο κώδικα:

    RewriteCond %(QUERY_STRING) ^path=83_94_113&route=product/category$

    RewriteRule ^index\.php$ http://site.com/new-category?

    Αλλά με τι να κάνουμε δυναμικές διευθύνσεις, τα οποία, λόγω της δέσμευσής τους σε μια συγκεκριμένη ενότητα, μοιάζουν με site.com/katalog?c=okna-pvkh ?

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

    RewriteCond %(QUERY_STRING) ^c=okna-pvkh$

    Κατάλογος RewriteRule http://site.com/?

    Σημειώσεις και λάθη

    Τώρα ας μιλήσουμε για το πώς να αποφύγετε λάθη κατά τη ρύθμιση μιας ανακατεύθυνσης 301:

    • Η σειρά των κανόνων προώθησης δεν πρέπει να παραβιάζεται. Μετά τη ρύθμιση της ανακατεύθυνσης, πρέπει να βεβαιωθείτε ότι η ρύθμιση δεν προκάλεσε " παρενέργειες" Εάν παραβιάσετε την ακολουθία κανόνων, τότε οι ανακατευθύνσεις που έχουν ρυθμιστεί προηγουμένως ενδέχεται είτε να σταματήσουν να λειτουργούν είτε να λειτουργούν εσφαλμένα. Δεν πρέπει να υπάρχουν αντιφάσεις στους κανόνες.
    • Μη διστάσετε να χρησιμοποιήσετε τα επίσημα εγχειρίδια, γιατί... Λόγω της περίπλοκης σύνταξης, οι ανακατευθύνσεις 301 έχουν πολλά χαρακτηριστικά. Είναι εύκολο να χάσετε κάποια απόχρωση κατά τη ρύθμιση.
    • Μετά το επόμενο «τελείωμα», πραγματοποιείτε ΠΑΝΤΑ πλήρης έλεγχοςτη λειτουργικότητα αυτών των κανόνων που εφαρμόστηκαν νωρίτερα. Η ρύθμιση χωρίς έλεγχο δεν είναι ρύθμιση ούτε για εμφάνιση. Ένας επιπλέον χαρακτήρας μπορεί να καταρρεύσει ολόκληρο τον ιστότοπο ή να τον κάνει να λειτουργεί εσφαλμένα. Ακολουθώντας άλλους προγραμματιστές, χρειάστηκε περισσότερες από μία φορές να διορθώσουμε τη λειτουργία του ιστότοπου, όταν εμφανίζεται μια ανακατεύθυνση 301 από τη διεύθυνση site.com/oldpage στη διεύθυνση site.com/newpage και, στη συνέχεια, χρησιμοποιώντας την ίδια ανακατεύθυνση 301, πραγματοποιείται ανακατεύθυνση πίσω στο site.com/oldpage και περαιτέρω "σε κύκλο".

    Λοιπόν, εν κατακλείδι, θα δώσουμε μερικά παραδείγματα όταν δεν μπορείτε να χρησιμοποιήσετε καθόλου ανακατευθύνσεις 301.

    Πρώτον, "multi-pass", όταν υπάρχει μια σειρά από πολλές ανακατευθύνσεις 301 στη σειρά. Είναι πολύ πιο σωστό να ρυθμίσετε μια ανακατεύθυνση απευθείας στη διεύθυνση "τελικού".

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

    Τρίτον, ανακατευθύνει «στο λάθος μέρος». Εκείνοι. εάν η σελίδα έχει μετακινηθεί από την πρώτη διεύθυνση στη δεύτερη και όταν ρυθμίζετε μια ανακατεύθυνση υποδεικνύετε κατά λάθος τη διεύθυνση μιας εντελώς διαφορετικής σελίδας.

    Τέταρτον, ανακατεύθυνση σε μια σελίδα που για κάποιο λόγο λειτουργεί πολύ λανθασμένα. Η σελίδα θα πρέπει να λειτουργεί σταθερά και να επιστρέφει είτε τον κωδικό 200 είτε τον κωδικό 404.

    Πέμπτον, ανακατευθύνετε το αρχείο robots.txt. Αυτό απαγορεύεται από τους κανόνες πολλών μηχανών αναζήτησης. Επιπλέον, πολλοί κάνουν το ίδιο λάθος - κατά τη ρύθμιση ανακατεύθυνση htaccessσε https από http://site.xyz/robots.txt σε https://site.xyz/robots.txt . Το αρχείο robots.txt πρέπει να είναι προσβάσιμο και στις δύο διευθύνσεις χωρίς ανακατευθύνσεις. Ακριβώς το ίδιο ισχύει και για τον χάρτη ιστότοπου xml.

    (PHP 4, PHP 5, PHP 7)

    κεφαλίδα — Στείλτε μια ακατέργαστη κεφαλίδα HTTP

    Περιγραφή

    επικεφαλίδα (string $header [, bool $replace = TRUE [, int $http_response_code ]]) : void

    Η header() χρησιμοποιείται για την αποστολή μιας ακατέργαστης κεφαλίδας HTTP. Δείτε την προδιαγραφή » HTTP/1.1 για περισσότερες πληροφορίες σχετικά με τις κεφαλίδες HTTP.

    Να θυμάστε ότι η κεφαλίδα() πρέπει να κληθεί πριν σταλεί οποιαδήποτε πραγματική έξοδο, είτε από κανονικές ετικέτες HTML, κενές γραμμές σε ένα αρχείο ή από PHP. Είναι πολύ συνηθισμένο σφάλμα η ανάγνωση κώδικα με συναρτήσεις συμπερίληψη ή απαίτηση , ή άλλη συνάρτηση πρόσβασης αρχείου και να υπάρχουν κενά ή κενές γραμμές που εξάγονται πριν κληθεί η κεφαλίδα().


    Το ίδιο πρόβλημα υπάρχει όταν χρησιμοποιείτε ένα μόνο αρχείο PHP/HTML.

    Παράμετροι

    Η συμβολοσειρά κεφαλίδας. Υπάρχουν δύο κλήσεις κεφαλίδας ειδικής περίπτωσης. Το πρώτο είναι μια κεφαλίδα που ξεκινά με τη συμβολοσειρά " HTTP/ " (η υπόθεση δεν είναι σημαντική), η οποία θα χρησιμοποιηθεί για τον προσδιορισμό του κωδικού κατάστασης HTTP προς αποστολή. Για παράδειγμα, εάν έχετε ρυθμίσει τον Apache να χρησιμοποιεί ένα σενάριο PHP για να χειρίζεται αιτήματα για αρχεία που λείπουν (χρησιμοποιώντας τοΈγγραφο σφάλματος

    οδηγία), μπορεί να θέλετε να βεβαιωθείτε ότι το σενάριό σας δημιουργεί τον σωστό κωδικό κατάστασης. Η δεύτερη ειδική περίπτωση είναι η κεφαλίδα "Τοποθεσία:". Όχι μόνο στέλνει αυτήν την κεφαλίδα πίσω στο πρόγραμμα περιήγησης, αλλά επιστρέφει επίσης αΔΙΕΥΘΥΝΩ ΠΑΛΙΝ 201 (302) κωδικός κατάστασης στο πρόγραμμα περιήγησης εκτός εάν ή α 3xx

    Ο κωδικός κατάστασης έχει ήδη οριστεί.

    Αντικαθιστώ

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

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

    Αξίες επιστροφής

    Δεν επιστρέφεται καμία τιμή.

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

    Παράδειγμα #1 Διάλογος λήψης

    Εάν εσείς θέλουν τοΓια να σας ζητηθεί από τον χρήστη να αποθηκεύσει τα δεδομένα που στέλνετε, όπως ένα αρχείο PDF που δημιουργείται, μπορείτε να χρησιμοποιήσετε την κεφαλίδα » Content-Disposition για να δώσετε ένα προτεινόμενο όνομα αρχείου και να αναγκάσετε το πρόγραμμα περιήγησης να εμφανίσει το παράθυρο διαλόγου αποθήκευσης.