szalik.dev
szalik.dev

Reputation: 21

Using multiple rewrite rules

i'm trying to create multiple rewrite rules to make friendly URL but what i did, makes my website throw error 500.

I've tried this but can't seem to make it work.

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*) /index.php?category=$1 [L]
RewriteRule ^(.*)/(.*) /index.php?category=$1&subcategory=$2 [L]
RewriteRule ^(.*)/(.*)/(.*) /index.php?category=$1&subcategory=$2&userid=$3 [L]

What i need is basically to make this urls work: domain.com/GetAnnouncements as domain.com/index.php?category=GetAnnouncements
domain.com/Persona/GetAchievements/2 as domain.com/index.php?category=Persona&subcategory=GetAchievements&userid=2
and there also should be third option that works 'in between' without 3rd parameter which is &userid=2

Upvotes: 1

Views: 57

Answers (2)

szalik.dev
szalik.dev

Reputation: 21

After some more googling and consulting with my friend we came to this solution which works:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^(.*)/(.*)/(.*)$ index.php?category=$1&subcategory=$2&userid=$3 [L,QSA]
RewriteRule ^(.*)/(.*)$ index.php?category=$1&subcategory=$2 [L,QSA]
RewriteRule ^(.*)$ index.php?category=$1 [L,QSA]

Thank you everyone who tried to help!

Upvotes: 1

RavinderSingh13
RavinderSingh13

Reputation: 133428

With your shown samples please try following .htaccess rules file.

Make sure to use either 1st OR 2nd solution only at a time.

Please make sure:

  • To keep your .htaccess rules file, index.php file in your root location.
  • Clear your browser cache before testing your URLs.

1st solution: Generic rules where using regex.

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^([^/]*)/?$ /index.php?category=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/?$ /index.php?category=$1&subcategory=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/(/d+)/?$ /index.php?category=$1&subcategory=$2&userid=$3 [L]


OR 2nd solution: Using specific string/URLs only as per your shown samples.

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^(GetAnnouncements)/?$ /index.php?category=$1 [NC,L]
RewriteRule ^(Persona)/(GetAchievements/)/?$ /index.php?category=$1&subcategory=$2 [NC,L]
RewriteRule ^(Persona)/(GetAchievements/)(/d+)/?$ /index.php?category=$1&subcategory=$2&userid=$3 [NC,L]

Upvotes: 2

Related Questions