kordoni Δημοσ. 2 Μαΐου 2018 Δημοσ. 2 Μαΐου 2018 (επεξεργασμένο) Έχω ενα demo HTML5 History API (με βάση αυτο) σε Apache2.4 και προσπαθώ να γράψω rewrite rules για τα URLs , αλλα σε συνδυασμο με τις αλλαγες του HTML5 History API στα URLs το εχω χασει λιγο. Τα URLs ειναι τώρα της μορφης http://localhost/test/history.php και αν κανω κλικ στα HistoryAPI links περνω κατι σαν http://localhost/test/history.php/bob χωρίς page reload. Το History API δουλευει μια χαρα, αν κλικαρω στα Links το URL αλλαζει και το περιεχομενο ανανεωνετε οπως θα επρεπε, χωρις page reload. Αν κανω paste ενα link σε αδειο address bar, τοτε η σελιδα φορτωνει και εμφανιζει το περιεχομενο που θα επρεπε. Θελω ομως τα URL να ειναι της μορφης http://localhost/test/history/bob Με το HistoryAPI μπορω πολυ ανετα να φτιαξω κατι τετοιο, γραφωντας history.pushState(data, event.target.textContent, "/test/history/"+cat); αντι για history.pushState(data, event.target.textContent, "/test/history.php/"+cat); που εχω τωρα. Ετσι δεν υπαρχει κανενα προβλημα αν κλικαρω τα links --γιατι λογω HistoryAPI η σελιδα δεν ξαναφορτωνει. Αλλα, αν κανω paste ενα URL του τυπου http://localhost/test/history/bob σε ενα αδειο address bar, τοτε μου δινει 500 server error -- γιατι ψαχνει για το subfolder history/bob ?? Οπότε, πως σβηνω το .php κομματι απο τα URLs κρατώντας παράλληλα το /bob κομματι σαν URL data και οχι σαν subfolder? Το HistoryAPI μπορει ευκολα να φτιαξει κατι τετοιο, αλλα o Apache δε τα διαβαζει σωστα. Πρεπει να διαβασει το history σαν history.php και το /bob να θεωρει οτι δε πρεπει να κανει τιποτα και να αφησει την javascript να το διαβασει, για να παιξει μετα με το HistoryAPI και την φορτωση περιεχομενου. Επίσης θέλω να σβήσω το τελευταίο / απο καθε URL , αν υπάρχει (πχ http://localhost/test/history/bob/ ) , το σβηνει, αλλα μου δινει παλι 500 server error . Τα rewrite rules που εχω στο τελος του httpd.conf ειναι <Directory "c:/Apache24/htdocs/" > RewriteEngine On ## last / at the end ## RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] ## .html ## RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^ %{REQUEST_URI}.html [NC,L] ## .php ## RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L] </Directory> Λιγη βοήθεια? Δεν εβαλα καθολου javascript κωδικα για να ειναι πιο απλη η ερωτηση, αλλα αν θελετε να τον βαλω για να καταλαβετε καλυτερα τι παιζει, πειτε μου. Ευχαριστώ πολυ Επεξ/σία 2 Μαΐου 2018 από kordoni
alou Δημοσ. 5 Μαΐου 2018 Δημοσ. 5 Μαΐου 2018 Η javascript και το history api δεν έχουν σχέση με το πρόβλημά σου, δηλαδή τα rewrites. Άσε στην άκρη το ένα για να καταλάβεις τι πρόβλημα έχεις με το άλλο πρώτα και μετά συνεχίζεις. Υπάρχουν δεκάδες παραδείγματα για να δουλέψει το rewrite που θες με διάφορους τρόπους, θα δοκιμάσεις μερικά και θα βρεις αυτό που θα δουλέψει όπως το θες ή ακόμα καλύτερα θα καταλάβεις τι κάνει και θα το φτιάξεις εσύ. Μετά άρχισε να παίζεις με το history.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα