Ci sto lavorando da un paio di giorni e mi chiedo se qualcuno potrebbe indicarmi la direzione giusta per favore ... Sto cercando di passare due variabili nella mia riscrittura.
A meno che l'url specificato non sia un file o una directory, mi piacerebbe che tutti gli URL venissero riscritti dinamicamente come segue:
example.com/category -> example.com/index.php?p=category
example.com/category/page -> example.com/index.php?p=category&article=page
example.com/category2/page -> example.com/index.php?p=category2&article=page
Sto avendo difficoltà a cercare di trasformare quanto segue in qualcosa di dinamico:
RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L]
Sto provando questo ma non funziona:
RewriteRule ^(.+?)/(.+?)$ ?p=$1&article=$2 [L]
... anche provandolo ma non funziona neanche:
RewriteRule ^(.*)/(.+?)$ ?p=$1&article=$2 [L]
Sto cercando di evitare di inserire quanto segue per farlo funzionare:
RewriteRule ^category2/(.+?)$ ?p=category2&article=$1 [L]
Ecco il codice completo:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?p=$1 [L]
AGGIORNARE:
Questo in realtà lo ha fatto per me:
RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$2 [L]
Grazie!! Andrea
risposte:
2 per risposta № 1Non sono un esperto, ma penso che questo lo farà per voi:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+)/([^/]+) index.php?p=$1&article=$2 [L]
Dove [^/]+
corrisponde a tutto tranne /
, risultato quando testato htaccess.madewithlove.be
MODIFICARE:
come ho completamente dimenticato che il secondo parametro è facoltativo, il grande aggiornamento nell'OP lo ha quasi fatto eccetto il fatto che aggiunge un /
all'inizio del valore parametro2, perché $2
sta catturando il gruppo esterno, mentre abbiamo bisogno di quello interno, come mostrato in questa immagine:
Anziché sostituire $2
con $3
e questo dovrebbe risolverlo:
RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$3 [L]