Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

:D :D :D :D Ωραία. Τέλεια απάντηση! Βέβαια έχω υλοποιήσει τα GET requests και μου έμενε μόνο να βρω τρόπο για το πως θα συντάξω την εντολή για url rewrite και πως θα βάλω το λινκ στη σελίδα. Πάντως αυτά που έγραψες ήταν κατατοπιστικότατα!

Κάτι άλλο... Γίνεται αντί να δημιουργείται μια κατηγορία "archives/" από το αρχείο archives.php να το μετονομάσουμε κάπως αλλιώς και παρόλα αυτά να πηγαίνει στο archives.php?

 

Όσον αφορά τα ελληνικά με τον apache σίγουρα υπάρχει τρόπος. Απλά κοίτα το url αυτής της σελίδας! :rolleyes:

 

Ευχαριστώ πολύ για την απάντησή σου! Θα τα δοκιμάσω...

  • Απαντ. 31
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Προφανώς και παίζει και με ελληνικούς χαρακτήρες, απλά εγώ δεν έχω παίξει ποτέ με 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]

 

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

Δημοσ.

Προφανώς και παίζει και με ελληνικούς χαρακτήρες, απλά εγώ δεν έχω παίξει ποτέ με 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

Δημοσ.

Βεβαίως και μπορείς, και είναι και ακόμα καλύτερα για της μηχανές αναζήτησης, αλλά θα πρέπει όλα σου τα Request που θα είναι με URL Key να εξυπηρετούνται από μόνο ένα αρχείο.

 

Για να το κάνεις αυτό μπορείς να γράψεις αυτό τον κώδικα

RewriteEngine on

RewriteRule ^([a-zA-Z0-9\-]*)$ archives.php?asu=$1 [R]

Δημοσ.

Επιτέλους βρήκα πως να το κάνω. Το πρόβλημα είναι ότι δε δέχεται τελείες στο όρισμα ενώ εγώ έβαζα! Δηλαδή δε μπορεί να γίνει 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 στον περιηγητή!

Πως γίνεται να το κρύψω το πραγματικό και να φαίνεται μόνο το εύκολο;

Δημοσ.

Βασικά οι τελείες δεν παίζουν γιατί είναι ειδικοί χαρακτήρες στο 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 και να το συζητήσουμε ;)

Δημοσ.

Με βάση τις 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>

Δημοσ.

Ναι αυτό φταίει αλλά αν το βγάλω τη σελίδα την εμφανίζει χωρίς το css και χωρίς εικόνες γιατί νομίζει ότι αυτά είναι στο ριζικό κατάλογο και όχι στον κατάλογο /test :angry:

Δημοσ.

Τελικά απλά άλλαξα τη διαδρομή του 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]

 

Ευχαριστώ πολύ για όλες τις απαντήσεις!

  • 2 εβδομάδες αργότερα...
Δημοσ.

ας πούμε ότι θέλει κάποιος 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.

Δημοσ.

ας πούμε ότι θέλει κάποιος 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' );
  }

Δημοσ.

Αυτό το κάνεις με 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 ίσως.

Δημοσ.

ευχαριστώ για την γρήγορη απάντηση, αλλά νομίζω ότι κάπως πρέπει να γίνεται και με το mod_rewrite με κάποιο conditional ίσως.

 

χμ για την περίπτωση μου αυτό έκανε το "πρόβλημα"

>RewriteRule ^(.*)$ http://www.example.org/$1 [L,R=301]

συγκεκριμένα το regex pattern.(αν το βάλω έτσι είναι κομπλέ ^([A-Za-z0-9-_]*)/). Λογικό γιατί το προηγούμενο δεχόταν οτιδήποτε ενώ αυτό θέλει έναπό αυτά που του δίνω

  • 10 μήνες μετά...

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...