Web Hosting Domain Names dnHost Site
Προηγμένη αναζήτηση Αναζητήστε τη γνωσιακή βάση
 Featured

Πως κάνω 301 redirect με htaccess;

Προβολές: 5257 Τελευταία ενημέρωση: 04/09/2017 12:14 0 Βαθμολογία/ Χρήστες

301 redirects είναι εντολές που εισάγετε στο "htaccess" αρχείο του ιστότοπου σας. Αυτό το αρχείο βρίσκεται στο γονικό (root) κατάλογο (πχ httpdocs, public_html) του domain σας στο server που κάνετε το hosting σας.

Η πρόσβαση στο htaccess γίνεται πριν καν φορτώσει η ιστοσελίδα σας κι έτσι οι εντολές του εκτελούνται πριν το site σας αρχίσει να φορτώνει όταν κάποιος το επισκέπτεται.

Μπορείτε να δημιουργήσετε ή να επεξεργαστείτε το υπάρχον htaccess σας με τη χρήση ενός επεξεργαστή κειμένου όπως το Notepad ή το Notepad++.


Σενάρια 301 Redirect

Τα 301 redirects του άρθρου προορίζονται για χρήση αρχείου .htaccess σε Linux server με Apache web server ή LiteSpeed web server και με τη λειτουργία mod rewrite ενεργοποιημένη.

Σε κάθε παράδειγμα, θα δείτε μια γραμμή κώδικα που κάνει τη δουλειά που θέλουμε και την οποια θα πρέπει να εισάγετε στο htaccess αρχείο σας, κάτω από τη γραμμή "RewriteEngine on".

Αν δεν υπάρχει η εντολή "RewriteEngine on" στο htaccess σας, τότε απλά προσθέστε την εσείς. 


Ανακατεύθυνση μιας Ιστοσελίδας

Το πιο απλό σενάριο, είναι η ανακατεύθυνση μιας παλιάς σελίδας σε μία καινούρια.
Για παράδειγμα θα στείλουμε την www.mysite.gr/old.html στο www.mysite.gr/new.html:
Redirect 301 /old.html http://www.mysite.gr/new.html

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

Αυτή η εντολή δουλεύει και για ανακατεύθυνση σελίδων που δεν έχουν κατάληξη .html ή .php - συνήθως τέτοιου είδους σελίδες παράγουν CMS σαν το Joomla ή το Wordpress:

 Redirect 301 /old http://www.mysite.gr/new

Προσέξτε ότι δεν υπάρχει "/" μετά το όνομα της σελίδας στο 2ο URL! 


Διευθύνσεις χωρίς www προς διευθύνσεις με www

Κάθε website που δημιουργείτε θα πρέπει να ακολουθεί αυτόν τον κανόνα. Θα ανακατευθύνουμε την εκδοση χωρίς-www του domain (πχ mysite.gr) στην www έκδοση του domain σας (πχ www.mysite.gr). 

 Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^mysite.com RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]

Έτσι αποφεύγετε θέματα διπλού περιεχομένου ή σύγχισης με τις μηχανές αναζήτησης και δεν έχετε δύο εκδόσεις του site σας, μιας και το www. είναι στην ουσία ένα sub-domain του κύριου domain σας. 


Μετονομασία Φακέλου

Ας υποθέσουμε ότι μετανιώσατε που ονομάσατε κάπως ένα φάκελο του site σας και θέλετε να αλλάξετε το όνομά του, πχ δεν σας αρέσει το mysite.gr/newclothes/ και θέλετε να το κάνετε mysite.gr/clothes/, γιατί είναι μικρότερο και απλούστερο.
Παρ' όλα αυτά. θέλετε όλες οι σελίδες μέσα σ'αυτό το φάκελο να δουλεύουν και να προσαρμοστούν με τη νέα ονομασία του φακέλου.
Τότε θα χρησιμοποιήσετε αυτή την εντολή: 

 redirect 301 /newclothes/ http://www.mysite.gr/clothes/

Μπορείτε να κάνετε αυτή την ανακατεύθυνση και για υποφακέλους, πχ αν θέλετε ο φάκελος mysite.gr/clothes/classic/ να πάει στο /clothes/all/classic/, τότε θα κάνετε το εξής: 

 redirect 301 /clothes/classic/ http://www.mysite.gr/clothes/all/classic/

Εδώ θα πρέπει να αφήσετε την κάθετο "/" μετά τα ονόματα των φακέλων γιατί υποδηλώνει την ύπαρξη φακέλου.
Για παράδειγμα, αυτή είναι μια ιστοσελίδα mysite.gr/test και αυτός είναι ένας φάκελος: mysite.gr/test/ 


Μετακίνηση Φακέλου

 Αν έχετε ένα φάκελο mysite.gr/clothes και θέλετε να τον διαγράψετε μαζί με τις σελίδες που περιέχει (px /clothes/diesel.html, /clothes/energie.html, /clothes/staff.html) και να τα μεταφέρετε σε ένα άλλο φάκελο πχ mysite.gr/products, τότε γράψτε αυτή την εντολή: 
 redirectMatch 301 ^/clothes/ http://www.mysite.gr/products/

 Παρομοίως, αν θέλετε να ανακατευθύνετε έναν ολόκληρο φάκελο (πχ τον mysite.gr/clothes) μαζί με όλα τα περιεχόμενά του, προς μια μοναδική HTML σελίδα πχ mysite.gr/products/clothes.html 

 redirectMatch 301 ^/clothes/ http://www.mysite.gr/products/clothes.html
 

Domain προς Domain

Μερικές φορές μπορεί ένα website (πχ domain.gr) να πρέπει να μεταφερθεί σε ένα άλλο domain (πχ new-domain.gr).
Aπλά γράψτε τον παρακάτω κώδικα  μόνο, ώστε να είναι το μοναδικό περιεχόμενο του htaccess αρχείου σας:
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.new-domain.gr/$1 [R=301,L]

Με αυτό τον τρόπο, ανακατευθύνετε όλα τα περιεχόμενα από το παλιό σας site στην αρχική σελίδα του νέου site.
Δεν ανακατευθύνετε κάθε ένα φάκελο και σελίδα ξεχωριστά προς τη νέα τοποθεσία τους στο νέο domain.
Η εναλλακτική σε αυτό, είναι να γράψετε ένα 301 redirect για κάθε φάκελο ή σελίδα, αν θέλετε φυσικά να κρατήσετε την κατάταξη κάθε σελίδας στις μηχανές αναζήτησης.
Επίσης όταν ανακατευθύνετε με 301 redirect από ένα παλιό domain σε ένα καινούριο, θα πρέπει να συνεχίσετε να ανανεώνετε το παλιό domain σας.

Επίσης καλό θα είναι να ενημερώσετε όσους έχουν link προς το παλιό site σας, να το αλλάξουν και βάλουν στη θέση του το καινούριο domain σας.
Όταν το κάνουν, τότε μπορείτε να διαγράψετε το παλιό σας domain και να μη χρειαστεί να το ξανανανεώσετε.  


Παράδειγμα αρχείου .htaccess

παράδειγμα htaccess