/ / HTACCESS: dynamická adresa URL na prepísanie s viacerými premennými - php, .htaccess, mod-rewrite

HTACCESS: dynamická prepisová adresa URL s viacerými premennými - php, .htaccess, mod-rewrite

Pracoval som na tom už niekoľko dní a zaujímalo by ma, či by ma niekto mohol nasmerovať správnym smerom, prosím ... Snažím sa prepísať dve premenné.

Pokiaľ daná adresa URL nie je súborom alebo adresárom, chcel by som dynamicky prepísať všetky adresy URL takto:

example.com/kategória -> example.com/index.php?p=category
example.com/kategória/strana -> example.com/index.php?p=category&article=page
example.com/category2/page -> example.com/index.php?p=category2&article=page

Ťažko sa snažím zmeniť niečo dynamické:
RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L]

Skúšam to, ale nefunguje to:
RewriteRule ^(.+?)/(.+?)$ ?p=$1&article=$2 [L]

... tiež to skúsi, ale nefunguje to ani:
RewriteRule ^(.*)/(.+?)$ ?p=$1&article=$2 [L]

Snažím sa vyhnúť tomu, aby to fungovalo:
RewriteRule ^category2/(.+?)$ ?p=category2&article=$1 [L]

Tu je kompletný kód:

Options +FollowSymLinks
RewriteEngine On

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?p=$1 [L]

UPDATE:

Toto pre mňa skutočne urobilo:

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

Ďakujem!! Andrew

odpovede:

2 pre odpoveď č. 1

Nie som odborník, ale myslím si, že to urobí za vás:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/]+)/([^/]+) index.php?p=$1&article=$2         [L]

Kde [^/]+ zodpovedá všetkému okrem /, výsledok pri testovaní dňa htaccess.madewithlove.be

tu zadajte popis obrázku


EDIT:

Keďže som úplne zabudol, že druhý parameter je voliteľný, veľká aktualizácia v OP takmer urobila s výnimkou skutočnosti, že pridáva a / na začiatku hodnoty parametra 2, pretože $2 zachytáva vonkajšiu skupinu, zatiaľ čo potrebujeme vnútornú skupinu, ako ukazuje tento obrázok:

tu zadajte popis obrázku


namiesto vymeniť $2 s $3 a to by malo napraviť:

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

tu zadajte popis obrázku