/ / HTACCESS: URL di riscrittura dinamica con più variabili: php, .htaccess, riscrittura mod

HTACCESS: URL di riscrittura dinamica con più variabili - php, .htaccess, mod-rewrite

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 № 1

Non 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

inserisci la descrizione dell'immagine qui


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:

inserisci la descrizione dell'immagine qui


Anziché sostituire $2 con $3 e questo dovrebbe risolverlo:

RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$3   [L]

inserisci la descrizione dell'immagine qui