μπορεί να γίνει αυτό το RewriteRule;

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
sibas
Honorary Member
Δημοσιεύσεις: 1856
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από sibas » 15 Μαρ 2013 14:39

Γεια χαρά!

έχω κολλήση σε αυτό το φαινομενικά εύκολο rewrite

το url που θέλω να μετατρέψω είναι
http://site/download.php?file=somefile1.zip

και θέλω να εμφανίζετε κάτι σαν αυτό
http://site/files/somefile1.zip

Ακολουθώντας το παράδειγμα (που είναι ακριβώς ότι ζητάω)
http://corz.org/serv/tricks/htaccess2.p ... _so_simple

έχω κάνει το παρακάτω htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?archives=$1 [L]
### do not touch the above rules ###

RewriteRule ^files/([^/]+).zip /download.php?file=$1 [NC]
ωστόσο όμως δεν έχω καταφέρει να το κάνω να λειτουργήσει.

σκέφτομαι ότι ίσως να έχω πρόβλημα με το τρόπο που δημιουργώ το url
foreach($files_array as $key=>$val){
echo '<li><a href="download.php?file='.urlencode($val).'">'.$val.'
κάποια ιδέα;;;

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

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από gvre » 15 Μαρ 2013 14:54

To $1 δεν περιέχει την κατάληξη, επειδή κλείνεις την παρένθεση πριν το .zip. Δοκίμασε το παρακάτω.

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

RewriteRule ^files/&#40;&#91;^/&#93;+\.zip&#41; /download.php?file=$1 &#91;NC&#93;
Επίσης, τα urls που θα δημιουργείς θα πρέπει να έχουν την 1η μορφή (/files/filename.zip).

sibas
Honorary Member
Δημοσιεύσεις: 1856
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από sibas » 15 Μαρ 2013 15:28

Hey gvre, σε ευχαριστώ για την απάντηση

το δοκίμασα άλλαξα το RewriteRule και άλλαξα το url να οδηγείτε σε
http://site/download.php?file=/files/somefile1.zip
(παρόλο που γνώριζα ότι δεν θα λειτουργούσε το υπόλοιπο script)

αλλά τπτ, δεν μπορώ να το καταλάβω γιατί δεν λειτουργεί, ακόμα και τα logs δεν μου βγάζουν κάποιο error παρά μόνο ότι κάνουν aborting το συγκεκριμένο RewriteRule

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

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από gvre » 15 Μαρ 2013 15:33

Το url θα πρέπει να είναι της μορφής /files/filename.zip. Αυτό θα γίνει rewrite σε /download.php?file=filename.zip

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

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από gvre » 15 Μαρ 2013 15:36

Επίσης, θα πρέπει να γραφτεί πριν το RewriteRule ^(.*)$ index.php?archives=$1 [L] . Βάλε το αμέσως μετά το RewriteEngine On.

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

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από gvre » 15 Μαρ 2013 15:37

Σβήσε τα παρακάτω, αν δεν τα χρειάζεσαι.

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?archives=$1 [L]
### do not touch the above rules ###

sibas
Honorary Member
Δημοσιεύσεις: 1856
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

μπορεί να γίνει αυτό το RewriteRule;

Δημοσίευση από sibas » 15 Μαρ 2013 16:24

υπάρχει λόγος για το "do not touch the above rules" :D

ωστόσο προσπαθώ να κάνω κάτι που δεν είναι εφικτό τουλάχιστον με το τρόπο που πάω να το κάνω (το κατάλαβα αργά και sorry για την ταλαιπωρία)

θα επανέρθω μόλις διορθώσω το script :roll:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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