digimyth Δημοσ. 11 Δεκεμβρίου 2010 Μέλος Δημοσ. 11 Δεκεμβρίου 2010 :D :D Ωραία. Τέλεια απάντηση! Βέβαια έχω υλοποιήσει τα GET requests και μου έμενε μόνο να βρω τρόπο για το πως θα συντάξω την εντολή για url rewrite και πως θα βάλω το λινκ στη σελίδα. Πάντως αυτά που έγραψες ήταν κατατοπιστικότατα! Κάτι άλλο... Γίνεται αντί να δημιουργείται μια κατηγορία "archives/" από το αρχείο archives.php να το μετονομάσουμε κάπως αλλιώς και παρόλα αυτά να πηγαίνει στο archives.php? Όσον αφορά τα ελληνικά με τον apache σίγουρα υπάρχει τρόπος. Απλά κοίτα το url αυτής της σελίδας! Ευχαριστώ πολύ για την απάντησή σου! Θα τα δοκιμάσω...
merianos Δημοσ. 11 Δεκεμβρίου 2010 Δημοσ. 11 Δεκεμβρίου 2010 Προφανώς και παίζει και με ελληνικούς χαρακτήρες, απλά εγώ δεν έχω παίξει ποτέ με rewrite και ελληνικούς χαρακτήρες και έτσι δεν είμαι βέβαιος για το πως θα πρέπει να το κάνεις. Σε ότι αφορά το όνομα του καταλόγου, εσύ το αποφασίζεις. Έτσι για παράδειγμα, αν θέλεις να είναι το url σου έτσι : http://www.mysite.ext/some-other-name/some-article-url-key τότε θα πρέπει να μεταβάλεις την πρώτη παράμετρο του RewriteRule έτσι ώστε να είναι κάπως έτσι : > RewriteEngine on RewriteRule ^some-other-name/([a-zA-Z0-9\-α-ωΑ-ΩάέήίόύώΆΈΉΊΌΎΏ]*)$ archives.php?asu=$1 [R] Επίσης αν ήθελες θα μπορούσες να παίξεις και με διαφορετικά αρχεία, αλλά αυτό είναι ποιο δύσκολο.
digimyth Δημοσ. 11 Δεκεμβρίου 2010 Μέλος Δημοσ. 11 Δεκεμβρίου 2010 Προφανώς και παίζει και με ελληνικούς χαρακτήρες, απλά εγώ δεν έχω παίξει ποτέ με rewrite και ελληνικούς χαρακτήρες και έτσι δεν είμαι βέβαιος για το πως θα πρέπει να το κάνεις. Σε ότι αφορά το όνομα του καταλόγου, εσύ το αποφασίζεις. Έτσι για παράδειγμα, αν θέλεις να είναι το url σου έτσι : http://www.mysite.ext/some-other-name/some-article-url-key τότε θα πρέπει να μεταβάλεις την πρώτη παράμετρο του RewriteRule έτσι ώστε να είναι κάπως έτσι : > RewriteEngine on RewriteRule ^some-other-name/([a-zA-Z0-9\-α-ωΑ-ΩάέήίόύώΆΈΉΊΌΎΏ]*)$ archives.php?asu=$1 [R] Επίσης αν ήθελες θα μπορούσες να παίξεις και με διαφορετικά αρχεία, αλλά αυτό είναι ποιο δύσκολο. Γίνεται να μη βάλω καθόλου την πρώτη παράμετρο; Thanks
merianos Δημοσ. 11 Δεκεμβρίου 2010 Δημοσ. 11 Δεκεμβρίου 2010 Βεβαίως και μπορείς, και είναι και ακόμα καλύτερα για της μηχανές αναζήτησης, αλλά θα πρέπει όλα σου τα Request που θα είναι με URL Key να εξυπηρετούνται από μόνο ένα αρχείο. Για να το κάνεις αυτό μπορείς να γράψεις αυτό τον κώδικα RewriteEngine on RewriteRule ^([a-zA-Z0-9\-]*)$ archives.php?asu=$1 [R]
digimyth Δημοσ. 13 Δεκεμβρίου 2010 Μέλος Δημοσ. 13 Δεκεμβρίου 2010 Επιτέλους βρήκα πως να το κάνω. Το πρόβλημα είναι ότι δε δέχεται τελείες στο όρισμα ενώ εγώ έβαζα! Δηλαδή δε μπορεί να γίνει www.example.com/free.seminars.for.web.development Αλλά τώρα που το κατάφερα τι γίνεται... Ας υποθέσουμε ότι έχω το παραπάνω λίνκ: www.example.com/free-seminars-for-web-development που θέλω να δείχνει στο www.example.com/index.php?page=free-seminars-for-web-development Όταν πατάω το "εύκολο" url και με ανακατευθύνει στο πραγματικό, εμφανίζεται παράλληλα και το πραγματικό url στον περιηγητή! Πως γίνεται να το κρύψω το πραγματικό και να φαίνεται μόνο το εύκολο;
merianos Δημοσ. 13 Δεκεμβρίου 2010 Δημοσ. 13 Δεκεμβρίου 2010 Βασικά οι τελείες δεν παίζουν γιατί είναι ειδικοί χαρακτήρες στο Regular Expression, έτσι για να βάλεις τελείες στο URL σου θα πρέπει να τις κάνεις escape με \. Έτσι αν ήθελες να έχεις το www.example.com/free.seminars.for.web.development το htaccess σου θα πρέπει να είναι έτσι : > [b] RewriteEngine on RewriteRule ^([a-zA-Z0-9\.]*)$ archives.php?asu=$1 [R] [/b] Τώρα για το πρόβλημα που έχεις σχετικά με το rewrite δεν μπορώ να σε βοηθήσω αν δεν δω το htaccess σου. Κάνε Paste εδώ το htaccess και να το συζητήσουμε
digimyth Δημοσ. 13 Δεκεμβρίου 2010 Μέλος Δημοσ. 13 Δεκεμβρίου 2010 Με βάση τις 17 τεχνικές σου: > # Απαγόρευση παραγωγής λίστας αρχείων για τους καταλόγους Options -Indexes RewriteEngine on RewriteCond %{HTTP_HOST} ^example.example.com$ [OR] RewriteCond %{HTTP_HOST} ^www.example.example.com$ RewriteRule ^/?$ "http\:\/\/www\.example\.org" [R=301,L] RewriteCond %{HTTP_HOST} ^example.org.example.com$ [OR] RewriteCond %{HTTP_HOST} ^www.example.org.example.com$ RewriteRule ^/?$ "http\:\/\/www\.example\.org" [R=301,L] RewriteCond %{HTTP_HOST} ^example.org [NC] RewriteRule ^(.*)$ http://www.example.org/$1 [L,R=301] # Παίρνει το πραγματικό όρισμα του index.php και το μετατρέπει σε κάτι πιο κατανοητό αποκρύπτωντας και το πραγματικό url RewriteRule ^([a-zA-Z0-9\-]*)$ /test/index.php?page=$1 [R] # Συμπίεση αρχείων text, html, javascript, css, xml: AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # Εμφάνιση custom error pages ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php # Διατήρηση αρχείων στην cache <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> # Aναγκαστική απενεργοποίηση της Cache για σενάρια εντολών και άλλα δυναμικά αρχεία <FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> # Προστασία από το hotlink # Aπαγόρευση χρήσης εικόνων από τη σελίδα μου για να μη γίνεται κατάχρηση του bandwidth. RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC] RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L] # Μπλοκάρισμα κάποιων κοινών τεχνικών επίθεσης με τον εντοπισμό ειδικών εντολών στο URL # RewriteEngine On # Είναι ενεργοποιημένο παραπάνω # proc/self/environ; Με τίποτα! RewriteCond %{QUERY_STRING} proc/self/environ [OR] # Αποκλεισμός κάθε σεναρίου που προσπαθεί να ορίσει τιμή στο mosConfig μέσω κάποιου URL RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR] # Αποκλεισμός κάθε σεναρίου που προσπαθεί να παραβιάσει το site σας με αποστολή κωδικοποιημένων εντολών se base64_encode μέσω URL RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR] # Αποκλεισμός κάθε σεναρίου που περιέχει την ετικέτα <script> στο URL RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] # Αποκλεισμός κάθε σεναρίου που προσπαθεί να αλλάξει τις μεταβλητές PHP GLOBALS μέσω κάποιου URL RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] # Αποκλεισμός κάθε σεναρίου που προσπαθεί να αλλάξει τις μεταβλητές _REQUEST μέσω κάποιου URL RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) # Ανά-κατεύθυνση κάθε αποκλεισμένης αίτησης στην αρχική σελίδα με κωδικό σφάλματος 403 #RewriteRule ^(.*)$ index.php [F,L] # Αποκλεισμός πολλαπλών τύπων αρχείων - Προστασία του αρχείου .htaccess <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh|txt)$"> Order Allow,Deny Deny from all </FilesMatch> # Αποκλεισμός επισκεπτών που έρχονται από συγκεκριμένο web site <IfModule mod_rewrite.c> # RewriteEngine on # Είναι ενεργοποιημένο παραπάνω RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR] RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR] RewriteRule .* - [F] </ifModule>
merianos Δημοσ. 13 Δεκεμβρίου 2010 Δημοσ. 13 Δεκεμβρίου 2010 Δοκίμασε να αφαιρέσεις το [R] από το τέλος.
digimyth Δημοσ. 13 Δεκεμβρίου 2010 Μέλος Δημοσ. 13 Δεκεμβρίου 2010 Ναι αυτό φταίει αλλά αν το βγάλω τη σελίδα την εμφανίζει χωρίς το css και χωρίς εικόνες γιατί νομίζει ότι αυτά είναι στο ριζικό κατάλογο και όχι στον κατάλογο /test
digimyth Δημοσ. 14 Δεκεμβρίου 2010 Μέλος Δημοσ. 14 Δεκεμβρίου 2010 Τελικά απλά άλλαξα τη διαδρομή του css και σε ότι άλλο χρειαζόταν η σελίδα με το πλήρες μονοπάτι που βρισκόταν και δούλεψε χωρίς redirect. πχ ><link rel="stylesheet" type="text/css" href="http://www.example.com/test/mycss.css" /> αντί για ><link rel="stylesheet" type="text/css" href="mycss.css" /> (παρόλο που το css και το index.php βρίσκονται στον ίδιο κατάλογο) και το htaccess >RewriteRule ^([a-zA-Z0-9\-]*)$ /test/index.php?page=$1 [NC,L] Ευχαριστώ πολύ για όλες τις απαντήσεις!
jms Δημοσ. 22 Δεκεμβρίου 2010 Δημοσ. 22 Δεκεμβρίου 2010 ας πούμε ότι θέλει κάποιος splash page. Τι πρέπει να αλλάξει εδώ >RewriteCond %{HTTP_HOST} ^example.org [NC]RewriteRule ^(.*)$ http://www.example.org/$1 [L,R=301] # Παίρνει το πραγματικό όρισμα του index.php και το μετατρέπει σε κάτι πιο κατανοητό αποκρύπτωντας και το πραγματικό url RewriteRule ^([a-zA-Z0-9\-]*)$ /index.php?page=$1 [R] ώστε όταν το $1 είναι άδειο, να μας στέλνει στο index.html? Υ.Γ Πολύ σημαντικό thread. Ίσως αν κάποιος έχει το χρόνο να το κάνει wiki.
digimyth Δημοσ. 22 Δεκεμβρίου 2010 Μέλος Δημοσ. 22 Δεκεμβρίου 2010 ας πούμε ότι θέλει κάποιος splash page. Τι πρέπει να αλλάξει εδώ >RewriteCond %{HTTP_HOST} ^example.org [NC]RewriteRule ^(.*)$ http://www.example.org/$1 [L,R=301] # Παίρνει το πραγματικό όρισμα του index.php και το μετατρέπει σε κάτι πιο κατανοητό αποκρύπτωντας και το πραγματικό url RewriteRule ^([a-zA-Z0-9\-]*)$ /index.php?page=$1 [R] ώστε όταν το $1 είναι άδειο, να μας στέλνει στο index.html? Υ.Γ Πολύ σημαντικό thread. Ίσως αν κάποιος έχει το χρόνο να το κάνει wiki. Αυτό το κάνεις με php. Δηλαδή στην αρχή της index.php βάζεις την ακόλουθη συνθήκη: > if ( empty( $_GET[ "page" ] ) ) { header( 'location: h_allh_selida.php' ); } Αυτό σημαίνει ότι όταν το $1 όπως είπες είναι άδειο ή πιο συγκεκριμένα το "page" δεν έχει όρισμα τότε θα μας κάνει redirect στο index.html ή όπου θες εσύ. Για παράδειγμα κάνεις αυτό: > if ( empty( $_GET[ "page" ] ) ) { header( 'location: index.php?page=splash' ); }
jms Δημοσ. 22 Δεκεμβρίου 2010 Δημοσ. 22 Δεκεμβρίου 2010 Αυτό το κάνεις με php. Δηλαδή στην αρχή της index.php βάζεις την ακόλουθη συνθήκη: > if ( empty( $_GET[ "page" ] ) ) { header( 'location: h_allh_selida.php' ); } Αυτό σημαίνει ότι όταν το $1 όπως είπες είναι άδειο ή πιο συγκεκριμένα το "page" δεν έχει όρισμα τότε θα μας κάνει redirect στο index.html ή όπου θες εσύ. Για παράδειγμα κάνεις αυτό: > if ( empty( $_GET[ "page" ] ) ) { header( 'location: index.php?page=splash' ); } ευχαριστώ για την γρήγορη απάντηση, αλλά νομίζω ότι κάπως πρέπει να γίνεται και με το mod_rewrite με κάποιο conditional ίσως.
jms Δημοσ. 22 Δεκεμβρίου 2010 Δημοσ. 22 Δεκεμβρίου 2010 ευχαριστώ για την γρήγορη απάντηση, αλλά νομίζω ότι κάπως πρέπει να γίνεται και με το mod_rewrite με κάποιο conditional ίσως. χμ για την περίπτωση μου αυτό έκανε το "πρόβλημα" >RewriteRule ^(.*)$ http://www.example.org/$1 [L,R=301] συγκεκριμένα το regex pattern.(αν το βάλω έτσι είναι κομπλέ ^([A-Za-z0-9-_]*)/). Λογικό γιατί το προηγούμενο δεχόταν οτιδήποτε ενώ αυτό θέλει έναπό αυτά που του δίνω
antonisid Δημοσ. 14 Νοεμβρίου 2011 Δημοσ. 14 Νοεμβρίου 2011 Επαναφέρω το θέμα μετά από καιρό για να σας ρωτήσω πως βρίσκετε την παρακάτω μέθοδο για sef urls http://www.9lessons.info/2011/04/seo-friendly-urls-with-php.html Μου φάνηκε σχετικά απλός, βρίσκετε κάποια "κενά"?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα