SEF URLs

Search Engine Optimization, Search Engine Positioning, Τρόποι προώθησης των σελίδων μας

Συντονιστές: WebDev Moderators, Super-Moderators, SEM Moderators

Απάντηση
Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

SEF URLs

Δημοσίευση από korgr » 19 Οκτ 2011 12:59

URL Rewriting vs «ErrorDocument 404 /handler.php» Directive

Επειδή μου αρέσει πολύ περισσότερο η δεύτερη λύση και έχω αρχίσει να την εφαρμόζω στο Odyssey, ήθελα να ρωτήσω:
Γιατί συντριπτικά ακολουθείται η πρώτη μέθοδος;
Κάτι που μου διαφεύγει;
Την γνώμη σας παρακαλώ...

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

SEF URLs

Δημοσίευση από cpulse » 19 Οκτ 2011 13:46

Την πρώτη μέθοδο δεν την έπιασα. Εννοείς αν βγάλει 404 να σε κάνει redirect κάπου;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

SEF URLs

Δημοσίευση από korgr » 19 Οκτ 2011 13:59

Αυτό που αναφέρεις είναι η δεύτερη μέθοδος:

Κώδικας: Επιλογή όλων

ErrorDocument 404 /handler.php
Ό,τι δεν βρίσκει το χειρίζεται το handler.php
Κάνεις url parsing και ανάλογα ή κατευθύνεις στη σωστή σελίδα ή σε ένα 404.php

Η πρώτη μέθοδος είναι η κλασσική με apache url rewriting (sorry εννούσα με RewriteCond)
πχ Joomla:

Κώδικας: Επιλογή όλων

########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section

Άβαταρ μέλους
kostasxx
Δημοσιεύσεις: 56
Εγγραφή: 08 Δεκ 2010 21:56
Τοποθεσία: Αθήνα
Επικοινωνία:

SEF URLs

Δημοσίευση από kostasxx » 19 Οκτ 2011 14:16

Το θετικό με τη πρώτη μέθοδο είναι ότι το Google δε βλέπει σφάλμα 404 και έτσι δε θα σου βγάλει dead link κάποιο link που μπορεί τώρα να μην ισχύει ή να είναι λάθος.
Έτσι κρατάει το link στη βάση δεδομένων του και έχεις περισσότερα αποτελέσματα από το domain σου.

Από την άλλη όμως μπορεί να παρούσιαζει αυτή τη σελίδα σε "άκυρες" λέξεις κλειδιά.
Στην ουσία, πιστεύω, πως είναι σύγκριση ποιότητας με ποσότητα.

Με τη πρώτη μέθοδο έχεις περισσότερες σελίδες στο Index της Google, αλλά πολλές μπορεί να είναι άχρηστες, ενώ με τη δεύτερη έχεις πιο "σωστές" σελίδες.
Αν δε κοιτάς εκέι που θες να πας... Θα πας εκεί που κοιτάς. Όταν μου το έλεγαν εγώ κοίταγα το ντουβάρι.
Web Design
http://www.stockatzidiko.gr / http://www.islandzakynthos.com/bookit

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

SEF URLs

Δημοσίευση από cpulse » 19 Οκτ 2011 14:24

Στο Joomla αυτό γίνεται για να αφήσει την PHP να χειριστεί το URL. Σε περίπτωση που δεν βρεί σελίδα δίνει 404 μέσω PHP.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

SEF URLs

Δημοσίευση από cpulse » 19 Οκτ 2011 14:26

kostasxx αυτό που λες δεν νομίζω να έχει κανένα νόημα. Το Google ψάχνει για μοναδικό περιεχόμενο. Αν έχεις άπειρα URLs που βγάζουν το ίδιο μήνυμα αυτό δεν νομίζω να μετράει σαν αξιοπρόσεχτο για την μηχανή αναζήτησης.

Άβαταρ μέλους
kostasxx
Δημοσιεύσεις: 56
Εγγραφή: 08 Δεκ 2010 21:56
Τοποθεσία: Αθήνα
Επικοινωνία:

SEF URLs

Δημοσίευση από kostasxx » 19 Οκτ 2011 14:42

cpulse έγραψε:kostasxx αυτό που λες δεν νομίζω να έχει κανένα νόημα. Το Google ψάχνει για μοναδικό περιεχόμενο. Αν έχεις άπειρα URLs που βγάζουν το ίδιο μήνυμα αυτό δεν νομίζω να μετράει σαν αξιοπρόσεχτο για την μηχανή αναζήτησης.
Δίκιο έχεις, απλά εάν ξαφνικά βγουν πολλές σελίδες με error, πέφτει πολύ το crawl rate, και έτσι εξαφανίζει πολλές σελίδες ταυτόχρονα από τη λίστα, ενώ με ένα redirect μένουν περισσότερο διάστημα, μέχρι να γίνουν Indexed οι καινούριες σελίδες.

Αυτό τουλάχιστον παρατήρησα εγώ σε κάτι αντίστοιχο που έκανα σε δική μου σελίδα. Μόλις άλλαξε η μορφή του URL και έβγαζε πολλές error pages, αμέσως έπεσε και στη κατάταξη, ενώ όταν σε άλλη περίπτωση εφάρμοσα redirect χωρίς σφάλμα δεν έγινε το ίδιο.

Το συμπέρασμα είναι ότι αυτό που περιγράφω είναι καθαρά πειραματικό, δεν έχω κάποια επίσημη θεωρία να το τεκμηριώσω.
Αν δε κοιτάς εκέι που θες να πας... Θα πας εκεί που κοιτάς. Όταν μου το έλεγαν εγώ κοίταγα το ντουβάρι.
Web Design
http://www.stockatzidiko.gr / http://www.islandzakynthos.com/bookit

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

SEF URLs

Δημοσίευση από korgr » 19 Οκτ 2011 14:51

Αλέξη μάλλον έκανα λάθος που παρέθεσα το παράδειγμα του Joomla.
Αντικατέστησε το με κάτι του στυλ:

Κώδικας: Επιλογή όλων

^tutorials/(.*)/(.*).php /tutorials.php?req=tutorial&tut_id=$1&page=$2
όπου το redirection γίνεται από τον apache ενώ η error handling μέθοδος επιτρέπει στην php το redirection. Αυτές τις δύο μεθόδους συγκρίνω και ψάχνω να βρω τα pros and cons

Είμαι υπέρ της δεύτερης μεθόδου γιατί οι αποφάσεις λαμβάνονται από την php και εκμεταλεύεσαι τις πληροφορίες της πλατφόρμας σου (του Odyssey στην περίπτωση μου)

Κώστα δεν νομίζω να ισχύει αυτό που λες. Στο error, το header 404 δεν κατευθύνεται στον browser, αλλά μετρέπεται σε redirection στο handler.php (ή όποιο άλλο custom php file ορίσεις). Ακόμα και μετά την διαχειριση του URI μπορείς να στείλεις σε custom Error Page αντί σε header 404

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

SEF URLs

Δημοσίευση από cpulse » 20 Οκτ 2011 01:34

kostasxx:
Τα μεγάλα search engines αλλάζουν τους αλγόριθμους τους συνεχώς και χωρίς να μας ενημερώνουν. Οπότε μόνο εμπειρικά μπορεί κανείς να βγάζει συμπεράσματα και μάλιστα για συγκεκριμένες εποχές. Άν περάσει λίγος καιρός μπορεί αυτό που ισχύει τώρα να μην ισχύει στο μέλλον.

νότη:
Πάλι δεν κατάλαβα ποιο είναι το δίλημμα.

Το HTTP header 404 μπορείς να το στείλεις ασχέτως με το τι περιέχει η σελίδα σου. Μπορεί να στείλεις 404 στους headers και στο περιεχόμενο της σελίδας να έχεις ο,τιδήποτε. Επίσης το redirect είναι κι αυτό επιλογή σου αν θα το κάνεις, δεν είναι αναγκαστικό.

Κάτι δεν έχω καταλάβει.. μπορείς να το εξηγήσεις με διαφορετικό τρόπο;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

SEF URLs

Δημοσίευση από korgr » 20 Οκτ 2011 11:01

cpulse έγραψε:
Κάτι δεν έχω καταλάβει.. μπορείς να το εξηγήσεις με διαφορετικό τρόπο;
Στην πρώτη περίπτωση Αλέξη η "μετάφραση" του sef url γίνεται με regex μέσα στο .htaccess και με rewriteCond φορτώνει την πραγματική σελίδα. Άρα ο controller βρίσκεται καθαρά σε επίπεδο apache.
Στην δευτερη περίπτωση ΟΛΑ τα requests που περιέχουν sef url αντιμετωπίζονται ως 404 (λογικό αφού δεν έχουμε στο .htaccess rewriteConds και regexs κλπ) και αντί να παράξουν header 404 ανακατευθύνουν στο handler.php όπου βρίσκεται ο controller που θα κάνει parse το URI. Άρα την τελική απόφαση για το αν υπάρχει η σελίδα του request ανήκει στην php.
Μέσα σε php έχω διαθέσιμα πολύ περισσότερα εργαλεία της πλατφόρμας μου ώστε να κάνω ακόμα πιο σύνθετα parses.
Επιλέγω αυτή την μέθοδο γιατί είμαι πολύ καλύτερος δουλεύοντας τον controller σε php παρά σε εντολές του apache μέσα στο .htaccess

Η ερώτηση είναι υπάρχει κάποιο μειονέκτημα στη λύση της php (δεύτερη)?
Γιατί οι πιο πολλοί ακολουθούν την πρώτη;
Υπάρχει κάποιο catch που δεν το βλέπω;

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

SEF URLs

Δημοσίευση από gvre » 20 Οκτ 2011 11:18

korgr έγραψε: Μέσα σε php έχω διαθέσιμα πολύ περισσότερα εργαλεία της πλατφόρμας μου ώστε να κάνω ακόμα πιο σύνθετα parses.
Επιλέγω αυτή την μέθοδο γιατί είμαι πολύ καλύτερος δουλεύοντας τον controller σε php παρά σε εντολές του apache μέσα στο .htaccess
Συμφωνώ. Ο apache δεν είναι τόσο ευέλικτος όσο η php. Επίσης είναι ευκολότερο να κάνεις debugging σε επίπεδο php παρά σε επίπεδο apache. Επίσης αν αποφασίσεις να αλλάξεις web server δε χρειάζεται να αλλάζεις πολλά rewrite rules.
korgr έγραψε: Η ερώτηση είναι υπάρχει κάποιο μειονέκτημα στη λύση της php (δεύτερη)?
Όχι :)
korgr έγραψε: Γιατί οι πιο πολλοί ακολουθούν την πρώτη;
Υπάρχει κάποιο catch που δεν το βλέπω;
Καλή ερώτηση. Οι πιο πολλοί ποιοί είναι;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

SEF URLs

Δημοσίευση από korgr » 20 Οκτ 2011 11:59

Thanks για την απάντηση! :)
Κάνοντας ένα search για sef url tutorial η πλειοψηφία των αποτελεσμάτων ασχολούνται με την apache method γι΄αυτό έθεσα το ερώτημα

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

SEF URLs

Δημοσίευση από gvre » 20 Οκτ 2011 12:21

Μάλλον το κάνουν επειδή βρίσκουν περισσότερα tutorials για την apache method :)

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

SEF URLs

Δημοσίευση από cpulse » 20 Οκτ 2011 18:14

Οκ.. αργώ λίγο αλλά τα παίρνω :)

Αν μελετήσεις τον κώδικα του .htaccess από το Joomla που παρέθεσες πιο πάνω θα δεις ένα καλό, που κατά την γνώμη μου ίσως να ναι και το μόνο. Αν το αρχείο υπάρχει, τότε το σερβίρει ο apache. Αν δεν υπάρχει τότε το στέλνει στην PHP. Αυτό είναι πολύ χρήσιμο για στατικά αρχεία (css, js, φωτογραφίες) τα οποία μπορεί να τα σερβίρει μόνος του ο apache.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

SEF URLs

Δημοσίευση από korgr » 20 Οκτ 2011 19:07

Μα Αλέξη μου το ίδιο κάνει στο .htaccess και το

Κώδικας: Επιλογή όλων

ErrorDocument 404 /handler.php

Μόνο όσα δεν υπάρχουν τα στέλνει στην php (αντί να τα χαρακτηρίσει 404 προς το output)
Για όσα υπάρχουν δεν επεμβαίνει το handler.php

Έχει κάτι άλλο καλό όμως το .htaccess του Joomla το οποίο δεν δημοσίευσα πριν:

Κώδικας: Επιλογή όλων

RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %&#123;QUERY_STRING&#125; &#40;\<|%3C&#41;.*script.*&#40;\>|%3E&#41; &#91;NC,OR&#93;
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %&#123;QUERY_STRING&#125; GLOBALS&#40;=|\&#91;|\%&#91;0-9A-Z&#93;&#123;0,2&#125;&#41; &#91;OR&#93;
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %&#123;QUERY_STRING&#125; _REQUEST&#40;=|\&#91;|\%&#91;0-9A-Z&#93;&#123;0,2&#125;&#41;
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^&#40;.*&#41;$ index.php &#91;F,L&#93;
Ένα security layer σε επίπεδο apache...

Απάντηση

Επιστροφή στο “Μηχανές αναζήτησης & SEO”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες