- Home
- Categorie
- Coding e Sistemistica
- Hosting e Cloud
- [Rewrite-url] problemi con directories e slash
-
[Rewrite-url] problemi con directories e slash
Buona sera a tutti,
ho realizzato un'applicazione php che permette di impostare la lingua o di rilevarla attraverso il browser.
Per impostarla utilizzo index.php?hl=nome_lingua
Così ho realizzato queste breve istruzioni per il rewrite url:RewriteEngine On
RewriteRule ^([a-z]{2})/index.php$ index.php?hl=$1
RewriteRule ^([a-z]{2})/$ index.php?hl=$1
RewriteRule ^([a-z]{2})$ index.php?hl=$1Il problema è che se accedo al sito (in locale) con questo link:
http://localhost/nomesito/it
funziona perfettamente.
Ma se provo ad accedere tramite questi due links:- *http://localhost/nomesito/it/ *
- http://localhost/nomesito/it/index.php
Mi si verificano una serie di errori.
Come mai?
Non sarà per il fatto che ho impostato la path del sito come
http://localhost/nomesito/ ?
-
Mi pare logico il perchè.
@Tarab said:
RewriteRule ^([a-z]{2})/index.php$ index.php?hl=$1
Questo accetta url del tipo .../it/index.php
@Tarab said:
RewriteRule ^([a-z]{2})/$ index.php?hl=$1
Questo accetta url del tipo .../it/
@Tarab said:
RewriteRule ^([a-z]{2})$ index.php?hl=$1
Questo accetta url del tipo .../it
In nessuno dei tre casi c'è la possibilità di accettare un qualcos'altro dopo lo slash ( tranne il primo dove accetta index.php ).
-
Ma scusa, allora a maggior ragione l'istruzione
RewriteRule ^([a-z]{2})/index.php$ index.php?hl=$1
dovrebbe funzionare mettendo
*http://localhost/nomesito/it/index.php
*Infatti tutti questi 3 links sono raggiungibili, ma è il sito a non interagire correttamente.
-
No, non è così.
Tu c'hai il primo blocco dell'espressione che è ([a-z]{2}) e questo matcha 2 caratteri alfabetici minuscoli.
Poi c'hai dopo lo slash index.php e due niente. Quindi l'index.php lo vede perchè matcha la prima regola, ma le altre due regole esprimono un url dove non c'è nient'altro dopo il blocco della lingua.
-
E quindi come dovrei fare per ottenre qualcosa tipo
Se digiti http://www.nomesito.ext*/it/, http://www.nomesito.ext/i, **http://www.nomesito.ext/it/index.php, leggi sempre le informazioni da *http://www.nomesito.ext/index.php?hl=parametro ?
-
Ci sono due problemi:
-
quelle regole vengono matchate in sequenza e chiaramente la seconda matcha la prima, la terza le matcha entrambe. Devi cercare di creare una sola regola
-
miosito è il problema, quindi o lo metti pure nella regola o sposti il file .htaccess nella directory corrispondente a miosito
-
-
Ciao,
riguardo a 2) ho già il file .htaccess nella root principale del sito.- come risolvo invece? Cioè, non avendo grosse conoscenze di url rewrite, come posso fare per risolvere questo problema?
-
Un consiglio che ti posso dare, è di farti una bella lettura di questo sito http://www.regular-expressions.info/
Le espressioni regolari sono alla base dell'url rewrite e senza capirne il funzionamento è praticamente impossibile realizzare rewrite corretti.
E' una cosa noiosa lo so, ma ti servirà per la vita.
-
grazie!