- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- rewrite per tagliare query string e estensione
-
rewrite per tagliare query string e estensione
Ciao a tutti,
ho una url così:
dominio.it/index.php?articolo=articolo-unocon la seguente regola, in .htaccess:
RewriteRule ^([^/]*).html$ /index.php?articolo=$1arrivo a questa:
dominio.it/articolo-uno.htmlvorrei eliminare anche l'estensione .html arrivando a questa
dominio.it/articolo-unonon riesco a farlo... C'è qualcuno con una dritta da darmi?
Grazie
Andrea
-
Ciao andreadm,
prova cosi:RewriteRule ^([^/]*)$ /index.php?articolo=$1
-
no,
purtroppo la regola riscritta così (nel modo che anche a me sembrava il più naturale) non funziona.
restituisce un Internal Server Error, l'errore sul log di apache è:[Sun Jan 30 11:28:59 2011] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
qualche idea?
grazie
A
-
Certo, va in loop.
prova cosi:RewriteRule ^([^(.php)]*)$ /index.php?articolo=$1 [L,NC]
-
ottimo!
ora funziona correttamente.
Premesso che, secondo me, il mondo si divide in chi sa utilizzare le espressioni regolari e chi no (io sono nella seconda categoria...), quando hai un pò di tempo potresti descrivere la regola che mi hai passato?
Il web è pieno di esempi e tutorial ma una spiegazione sul caso specifico mi sarebbe utilissima (e anche ad altri utenti!)
Grazie,
andrea
-
andreadm hai ragione, però cosi sprono ad informarsi
Neanche io conosco bene le espressioni regolari, anzi devo dire che sono un mio punto debole, ma per fortuna esiste internet
RewriteRule ^([^(.php)]*)$ /index.php?articolo=$1 [L,NC]
(.php) indica la "parola" .php
^ indica una negazione- indica 0 o più occorrenze
dunque: qualunque parola formata da zero o più caratteri che non contiene ".php"
- indica 0 o più occorrenze
-
avevamo cantato vittoria troppo presto...
la regola così funziona se all'interno della url riscritta non è presente ne una p ne un h
es.
dominio.it/sezione-uno, funzionamentre
dominio.it/sezione-p-uno, non funzionaqualche idea per correggere la regola?
Grazie
Andrea
-
Prova cosi:
RewriteRule ^([^.]+)$ /index.php?articolo=$1 [L,NC]
Come vedi non sono molto bravo con le espressioni regolari. Infatti non sono riuscito a fare l'espressione corretta al 100% ossia escludere la parola ".php".
-
ok,
l'ho testata e funziona!Grazie ancora,
Andrea
-
ciao a tutti
scrivo in questo topic perchè la mia necessità è simile a quella del topic ... in pratica mi servirebbe "comporre" un indirizzo di questo tipo:nomesito . com/cartella1/file.html
oppure:
nomesito . com/cartella1/cartella2/file.htmldove cartella1 e cartella2 sono nomi dinamici, in base a quello che viene "creato" dall'utente ... è possibile come cosa?
ho provato ad utilizzare il codice sopra ma se nel nome della cartella c'è un "." non funziona + ... avete una soluzione da suggerirmi? grazie mille
-
Ciao xbacco78,
anziche ^([^.]+)$ utilizza ^(.*)$
-
Ciao ragazzi anch'io ho un problemino analogo a xbacco78
In pratica mi servirebbe un mod_rewrite per questi due tipi tipi di URL.
- dominio . com/categoria.php?code=board-to-board
- dominio . com/prodotto.php?code=prodotto-prova
per il primo ho utilizzato questa regola come suggerita da ayrton:
RewriteRule ^prodotti/([^.]+)$ /categoria.php?code=$1
in modo che sia visibile la pagina da questo indirizzo:
dominio . com/prodotti/board-to-board
Mentre per il secondo c'è un problema, dovrei rendere visibile la pagina da questo indirizzo:
dominio . com/prodotti/board-to-board/prodotto-prova
Solo che nessuno dei metodi che ho utilizzato funziona, sostanzialmente la parte che viene passata è quella finale (prodotto-prova)
Che codice posso provare per farli funzionare tutti e due?
Grazie mille
-
Nessuno ha qualche suggerimento?