.htaccess σε υποφάκελο redirect στο index.php

Τεχνικές και μόνο Συζητήσεις για WEB hosting servers, Mail servers, DNS servers. Όχι αναζήτηση υπηρεσιών εδώ!

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

Απάντηση
Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από fAzer » 24 Ιουν 2010 15:58

Γεια σας παιδιά..
Έχω το εξής πρόβλημα.. Όταν πάω να μπω στο http://www.*.gr/*/ δε μου κάνει redirect στο index.php αλλά μου εμφανίζει το κεντρικό site ( http://www.*.gr) με περίεργη μορφοποίηση και λοίπουν οι φωτογραφίες κλπ..
Προσπάθησα να βάλω στο .htaccess στο φάκελο http://www.*.gr/*/ την εντολή DirectoryIndex index.php αλλά δεν πιάνει.. Σαν να μην την διαβάζει καν..
Πιό κάτω πρόσθεσα -> RewriteEngine on , και έτσι δούλεψε.. Τι ακριβώς κάνει αυτή η εντολή? μήπως έτσι ξεκάρφωτη δημιουργεί κάποιο πρόβλημα? Επειδή συνήθως σε μερικά .htaccess που μελέτησα μετά το RewriteEngine on έχει κάτι RewriteRule κλπ σαν να γίνεται πιο συγκεκριμένο το RewriteEngine.. δεν έχω ιδέα για όλα αυτά απλά μελετάω και πειραματίζομαι..
Το RewriteEngine on είναι επικίνδυνο έτσι μόνο του χωρίς RewriteRule κάτι, ή κάτι αλλό?

"DirectoryIndex index.php

RewriteEngine on"

Έτσι έχω το .htaccess και δούλεψε.
:)

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από fAzer » 25 Ιουν 2010 14:46

Κάτι ακόμα..
Πως γίνεται όταν κάποιος πάει να μπεί πχ http://www.*.gr/blabla ή http://www.*.gr/blabla/blabla ή http://www.*.gr/blabla/blabla? = php ή οτιδήποτε να κάνει redirect εκεί που θέλω εγώ ? ... Εκτός από κάποιο http://www.*.gr/blabla ας πούμε που θα έχω άλλο περιεχόμενο
Ευχαριστώ :)

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από fAzer » 30 Ιουν 2010 13:38

κανείς δε μπορεί να με βοηθήσει ;; :cry:

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από Apostolis_38 » 30 Ιουν 2010 16:29

Πάμε απ΄ την αρχή.

Εχεις στήσει τον Apache τοπικά ή πειραματίζεσαι στον server που έχεις τη σελίδα σου;
Αν είναι τοπικά, σε windows;

Στη συνέχεια.
Χωρίς να πειράξεις τίποτα, σε απλή σελίδα html κάνει redirect σωστά ή έχεις κι εκεί προβλήματα;
Από αυτά που γράφεις συμπεραίνω οτι κάποιο πρόβλημα υπάρχει με τα path στις σελίδες που τρέχεις ή κάτι έχεις μπερδέψει.
Αν γίνεις λίγο πιο αναλυτικός θα βοηθούσε.
Για παράδειγμα, γιατί http://www.*.gr/*/ κι όχι http://www.*.gr/


Η RewriteEngine αλλάζει μερικές βασικές ρυθμίσεις του Apache.

Στη συγκεκριμένη περίπτωση:
Η RewriteEngine ενεργοποιεί ή απενεργοποεί την RewriteRule (για να μην κάθεσαι να αλλάζεις όλα τα directives ένα-ένα σε όλο τον server) η οποία με τη σειρά της ενεργοποιεί την mod_rewrite με την οποία πειραματίζεσαι.

Η πρώτη απαιτεί παρμετροποίηση του server. Οι άλλες δύο εφαρμόζονται και τοπικά με το .htaccess

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Κι άλλα πράγματα κάνει, οπότε καλό είναι να ξέρεις τι κάνεις γιατί ναι, μπορεί να δημιουργήσει προβλήματα και σημαντικά.
Και με το .htaccess μπορείς επίσης να κάνεις μεγάλη ζημιά.

http://httpd.apache.org/docs/2.1/howto/htaccess.html

Ευτυχώς εμπλέκονται κι άλλες ρυθμίσεις στον server αλλά πάντα κάνουμε RTFM και μετά παίζουμε...

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από nbc » 30 Ιουν 2010 18:00

Apostolis_38 έγραψε:Η RewriteEngine αλλάζει μερικές βασικές ρυθμίσεις του Apache.

Στη συγκεκριμένη περίπτωση:
Η RewriteEngine ενεργοποιεί ή απενεργοποεί την RewriteRule (για να μην κάθεσαι να αλλάζεις όλα τα directives ένα-ένα σε όλο τον server) η οποία με τη σειρά της ενεργοποιεί την mod_rewrite με την οποία πειραματίζεσαι.

Η πρώτη απαιτεί παρμετροποίηση του server. Οι άλλες δύο εφαρμόζονται και τοπικά με το .htaccess
Το έχεις καταλάβει λάθος Απόστολε...

Η RewriteEngine είναι μία από τις 9 εντολές του mod-rewrite και δεν έχει σχέση με τον Apache kernel. Χωρίς αυτό το module, δεν υπάρχει RewriteEngine και καμιά Rewrite* εντολή. Η χρήση της είναι απλή και πρακτική: Να θέτει το mod_rerwite on και off χωρίς να χρειάζεται να κατεβάσεις τον server και να σβήνεις ότι Rewrite* εντολές έχεις, οπουδήποτε. By default είναι off, που σημαίνει ότι πρέπει να ενεργοποιηθεί explicitly.

Η λειτουργία του mod_rewrite είναι per server και per directory με διακριτό state. Δηλαδή, μπορείς να το ανοιγοκλείνεις όπου θέλεις. Είτε στο config είτε στο .htaccess. Όλες οι εντολές παίζουν και στα 2 contexts.

Δεν αλλάζει καμιά απολύτως ρύθμιση του Apache, είτε βασική είτε όχι. Απλά, χρησιμοποιεί τον standard μηχανισμό του kernel που είναι τα hooks: Συγκεκριμένα, κάνει register 4 γενικά (handler_redirect, pre_config, post_config, init_child) και 3 που αφορούν το ζουμί του (fixup, uri2file, mimetype). Το uri2file hook αναλαμβάνει τα του server και fixup τα του directory. Το mimetype είναι κοινό.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από Apostolis_38 » 30 Ιουν 2010 23:25

Και ναι και όχι :D

Δεν εννούσα οτι επεμβαίνεις στον πυρήνα του Apache ούτε οτι πρέπει να αλλάξεις το configuration του.
Αλλά όταν "αναγκάζεις" τον Αpache να αλλάξει τον default τρόπο που κάνει κάποια πράγματα τότε είναι σαν αλλάζεις βασικές του ρυθμίσεις.

Μάλλον δεν το περιέγραψα και πολύ καλά. Το έχω αυτό...

Πάντως για να πω την αλήθεια πίστευα πως το mode_rewrite είναι "εντολή" του RewriteEngine και όχι το αντίστροφο.

Μάλλον μου έδειξες το RATFM (read again the fu****ng manual) :D :D

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από fAzer » 01 Ιούλ 2010 00:54

Με το redirect βρήκα τελικά την άκρη από ένα παλιότερο θέμα που διάβασα..Ευχαριστώ..

Το θέμα μου τώρα είναι το εξής..
Για να ξεκινήσω όσο πιό απλά γίνεται..
Έχω το .htaccess έτσι ->

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

DirectoryIndex index.php

RewriteEngine On
RewriteBase / 
Υπάρχει κάποιο πρόβλημα που δεν έχω rules κλπ?

Είχα στο site ένα φάκελο Α1 ας πούμε ( www.*.gr/Α1/ ) αλλά όταν ήθελες να μπεις δεν έμπαινε.. μονο σαν www.*.gr/Α1/index.php μπορούσες να δεις το περιεχόμενο..
Στην αρχή είχα βάλει στο .htaccess μόνο το ->

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

DirectoryIndex index.php


Αλλά δεν έκανε τίποτα, δηλαδή είτε είχα το αρχείο .htaccess στον φάκελο Α1 είτε οχι ήταν το ίδιο.. Μετά πρόσθεσα το ->

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

RewriteEngine On
Και όλα καλά.. Έβαλα και ένα ->

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

RewriteBase /
Επειδή μου φάνηκε καλύτερο..

Είναι καλά έτσι ή πρέπει να ορίσω τίποτα Rules κλπ?
Sorry αν μου απαντήσατε ήδη και δεν το κατάλαβα :( [/code]

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από Apostolis_38 » 01 Ιούλ 2010 10:44

Για να σου πω την αλήθεια δεν έχω δει ποτέ να μην χρησιμοποιείται η rewrite rules αφού υποτίθεται οτι κάνεις αυτή την κίνηση επειδή θέλεις να δώσεις σε συγκεκριμένα urls μια συγκεκριμένη μορφή. Τη μορφή αυτή την ορίζεις με τη rewrite rules
Λέγοντας συγκεκριμένα urls μπορεί να είναι 4-5 urls από όλο το site, 4-5 directories ή ακόμα και όλο το site.
Προφανώς δεν έχει νόημα να μην την χρησιμοποιήσεις αφού δεν μπορείς να αφήσεις τον server να μαντέψει τι θέλεις να κάνεις.
Αλλά για το αν πρέπει οπωσδήποτε να τη δηλώσεις ώστε να μην τα παίξει ο server ή όχι, δεν ξέρω.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από nbc » 01 Ιούλ 2010 11:26

Το .htaccess, όπως το έχεις, το μόνο που κάνει είναι να απασχολεί τον Apache χωρίς λόγο. Ουδεμία άλλη χρησιμότητα έχει.

Ας δούμε τις εντολές, μία-μία:

DirectoryIndex

Η εντολή αυτή υπάρχει ήδη στο httpd.conf. Εξ' ορισμού, περιέχει μόνο index.html και index.var, αλλά όλα τα πακέτα τύπου (X)AMP προσθέτουν και την index.php. Εννοείται, οι public servers που υποστηρίζουν PHP το έχουν ήδη. Αν έχεις κάνει δική σου εγκατάσταση, ανοίγεις το httpd.conf, βρίσκεις την εντολή και προσθέτεις το index.php.

Η λογική του να χρησιμοποιήσεις αυτήν την εντολή σε ένα directory, είναι αν έχεις σε αυτό index scripts σε άλλη γλώσσα (python, perl, κλπ) και θέλεις να εκτελούνται μόνο στο συγκεκριμένο ή δεν υπάρχει index.* αρχείο αλλά κάτι άλλο που θέλεις να παίξει το ρόλο του index και δεν μπορείς να το μετονομάσεις.

RewriteEngine On

Το μόνο που κάνει είναι ένα flag από FALSE σε TRUE. Τίποτε άλλο. Το flag αυτό, το συμβουλεύεται αργότερα, αν υπάρξει εντολή σχετική με rewrite.

RewriteBase /

Το μόνο που κάνει είναι να σώνει το / σε μία μεταβλητή την οποία θα συμβουλευτεί όταν και μόνον όταν έρθει η ώρα του RewriteRule και μόνον σε directory context (σε server context δεν υπάρχουν directories άρα δεν έχει νόημα η εντολή). Εφόσον δεν έχεις rules, η εντολή δεν έχει αποτέλεσμα.

Το RewriteBase δεν το χρησιμοποιούμε επειδή μας φαίνεται καλύτερο (!) αλλά επειδή υπάρχει λόγος και ξέρουμε πολύ καλά τι κάνουμε καθώς επηρεάζει όλα τα urls που γίνονται rewrite. Υπό κανονικές συνθήκες δεν υπάρχει λόγος.

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

.htaccess σε υποφάκελο redirect στο index.php

Δημοσίευση από fAzer » 20 Ιούλ 2010 22:02

Ευχαριστώ πολύ :) ολά καλά ..

Απάντηση

Επιστροφή στο “Apache, IIS, DNS Servers”

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

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