- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Modrewrite, escludere una directory
-
Modrewrite, escludere una directory
Salve a tutti!
vengo al dunque:
Questa prima stringa mi funziona perfettamente:
RewriteRule ^(.*?)/([0-9]*)-(.*).htm$ index.php?id=$2 ```e mi permette di sostituire indirizzi del tipo [www.mioindirizzo.com/nome-qualsiasi-categoria/13-titolo-pagina.htm](http://www.mioindirizzo.com/nome-qualsiasi-categoria/13-titolo-pagina.htm) con [www.mioindirizzo.com/index.php?id=13](http://www.mioindirizzo.com/index.php?id=13) fin qui tutto regolare: ma se volessi processare diversamente tutti gli indirizzi che puntano alla sottocartella admin? ovvero una cosa tipo: [www.mioindirizzo.com/admin/nome-qualsiasi-categoria/13-titolo-pagina.htm](http://www.mioindirizzo.com/admin/nome-qualsiasi-categoria/13-titolo-pagina.htm) in [www.mioindirizzo.com/admin/index.php?id=13](http://www.mioindirizzo.com/admin/index.php?id=13) scriverei così giusto?
RewriteRule ^admin/(.?)([0-9])-(.*).htm$ admin/index.php?id=$2
inoltre mi chiedo: a) se queste 2 istruzioni (una volta definite) possano mai andare in conflitto. b) se esiste una regexp che accorpi entrambe le istruzioni in un unica stringa. grazie di essere arrivati fin qui :fumato:
-
La prima ricalca la struttura che avevi in mente tu:
(.[^/])/([0-9])-(.[^.]*).htm
e la seconda parte era giusta
c'era un punto interrogativo di troppo che non compariva nella url statica e erano saltate le slash
comunque per quello che devi fare tu secondo me va bene anche
admin/./([0-9])-.[^.]*.htm
assumendo che tu abbia sempre una struttura di url standard:
admin/nome-cartella/idnumerico-nomepagina.htmle tonde ti servono per salvare la stringa che matchi con l'espressione regolare: se ti serve solo il parametro numerico tanto vale usarle solo per beccare quello.
Bai
-
@DuccioG said:
La prima ricalca la struttura che avevi in mente tu:
...le tonde ti servono per salvare la stringa che matchi con l'espressione regolare: se ti serve solo il parametro numerico tanto vale usarle solo per beccare quello.
Bai
Grazie, funziona tutto alla perfezione
giusto per curiosità, come mai nella prima espressione non hai tolto le prime parentesi tonde?
Lì hanno un altro utilizzo? Sono forse necessarie per correttezza sintattica?
ti volevo anche chiedere: c'è qualche testo/link che te la sentiresti di consigliarmi come riferimento esaustivo e di facile consultazione concernente le espressioni regolari?
Io ne ho visti tanti, ma mai nessuno che mi desse modo di trovare chiaramente risposta ai miei quesiti.
Grazie ancora.
-
Prego, non c'è di che.
Le parentesi tonde hanno la funzione di salvare ciò che viene trovato dall'espressione regolare che racchiduono, mentre con il dollaro + numerico tu richiami quello che hai salvato in ordine progessivo.
Nello specifico della tua regola:
^(.?)/([0-9])-(.*).htm$ index.php?id=$2
salvavi- Espressione: qualunque carattere (.) ripetuto zero o più volte (*) prima della slash
- Espressione: qualunque carattere indicato in un range (le parentesi quadre) in questo caso numerico (da 0 a 9) prima del trattino
- Espressione: qualunque carattere (.) ripetuto zero o più volte (*) prima della estensione .htmlE riutilizzavi solo il numerico trovato dalla seconda espressione come valore del parametro id ($2)
Le altre due espressioni non occorre salvarle, dato che non le uilizzi, ma le devi indicare perché la regola si applichi a tutte le url strutturate allo stesso modo:
pippo/1-pluto.html piuttosto che paperino/2-topolino.htmlE' un meccanismo un po' astratto, ma quando ci entri dentro è abbastanza potente...
Per il resto di risorse non ne conosco :bho:, io mi sono "formato sul campo di battaglia" a furia di cornate
Secondo me ti può aiutare un editor come editplus che ha dei set di espressioni regolari predefiniti e commentati.
Bai
-
@DuccioG said:
Per il resto di risorse non ne conosco :bho:, io mi sono "formato sul campo di battaglia" a furia di cornate
Secondo me ti può aiutare un editor come editplus che ha dei set di espressioni regolari predefiniti e commentati.
Bai
Ok, affilo le corna allora thanx.