Ciao a tutti
Ho girato parecchio prima di scrivere, sia sul forum che su internet (stackoverflow ecc), ho pure chiesto a un mio collega come fa lui a gestire gli URL per il suo CMS, la sua risposta mi è sembrata piuttosto ovvia, fatto sta che qualsiasi cosa ho provato non ha ancora funzionato come voglio io.
Premessa, ho pensato che forse possa essere una configurazione particolare che su Altervista non è consentito fare. Siccome mi sto disperando, prima di continuare a impazzire e morire di veleno nel fegato, provo a chiedervi lumi.
Mi spiego.
Voglio rifare completamente il mio sito, e per fare questo sto cercando di crearmi un CMS decente (in realtà il mio scopo è proprio quello di farmi un CMS, e con questo rifarmi il sito). In pratica io vorrei che le pagine fossero gestite dinamicamente, quindi nel momento in cui uno naviga su sito.com/news/scoperta-l-acqua-calda, in realtà sta navigando su index.php (o altra pagina) che preleva la REQUEST_URI (/news/scoperta-l-acqua-calda), gestisce in questo caso news come padre (che sarà poi la tabella in cui cercare nel DB, e scoperta-l-acqua-calda come figlio che andrà a cercare nel DB come valore di riferimento. Quindi il mio valore di riferimento sarà l'URL.
Questo solo per spiegarvi cosa sto cercando di fare. Non dovrei aver problemi a fare tutto questo, ma il mio problema è questo:
Sono giorni che cerco di impostare l'htaccess per fare in modo che prenda tutto ciò che c'è dopo il primo slash (quindi sito.com/QUESTO/MA-ANCHE-QUESTO/E-QUESTO) lo rimandi a index.php/url... in modo da poterlo gestire. Ma non ci riesco.
Continuo ad avere errori di Pagina non trovata, da parte di Altervista, e ho pensato che forse AV non permette di usare lo slash ma solo il ?, perchè con lo slash lui va a cercare una cartella, di default, anche se io gli sto dicendo di fare altro. Può essere questo? Perchè se è così allora vuol dire che non posso usare questo metodo su altervista.
Se invece mi dite che dovrebbe funzionare, allora vi chiedo di aiutarmi a capire.
Inizialmente lavoravo su /new/, poi ho pensato che potesse darmi problemi allora ho iniziato a lavorare in root /, ma ancora non ho risolto. Inizialmente lavoravo su index.php, ho pensato potesse dare problemi, ho provato quindi su test.php, ma non è cambiato
Questo il mio htaccess attuale
Codice:
RewriteEngine on
RewriteRule ^/(.*)$ /test.php/$1 [NC,L]
Vi dico quello che ho già provato.
Codice:
RewriteRule ^(.*)$ /test.php/$1 [NC,L]
(non funziona,errore 500, anche se metto RewriteBase /)
RewriteRule ^/(.*)$ test.php/$1 [NC,L]
(cambia nulla)
La cosa interessante è che se cambio la RewriteRule cosi funziona (in parte)
Codice:
RewriteRule ^(\w+)$ /test.php/$1 [NC,L]
(funziona)
dico funziona in parte perchè quel \w+ mi prende solo una porzione di codice, la prima, senza barre, perche il W accetta tutti i caratteri alfanumerici (come dire a-z 0-9), quindi non le barre. Altrimenti dovrei fare:
Codice:
RewriteRule ^(\w+)/?(\w+)?/?(\w+)?/?$ /test.php/$1 [NC,L]
In pratica tanti (\w+)/? quanti i figli che posso avere nell'url... Questo mi risolve il problema ma io non voglio fare cosi perchè so che si può fare piu facilmente. Anche perchè se per assurdo ho 10 figli dovrei mettere 10 volte quella regular exp il che mi da fastidio. Vorrei farlo in modo semplice e facile.
Teoricamente questa regola
Codice:
RewriteRule ^/(.*)$ /test.php/$1 [NC,L]
Dovrebbe funzionare, o almeno così fa il mio collega nel suo cms (che non c'entra nulla con altervista).
Perciò non capisco quali siano i miei errori. Sbaglio la RewriteRule? E' altervista che impedisce in qualche modo di fare come voglio io?
Vi chiedo perchè sono sicuro che debba funzionare, mi ci sono massacrato i gioielli a cercare di risolvere, ma sto uscendo pazzo. Magari è una cosa banale di cui non mi accorgo, e quando me la direte dirò "Ah era così semplice".
Grazie a tutti per il tempo e per la risposta.