Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

URL Rewrite - Multiple query

I am trying to see how I can achieve the following rewrite rules.

From

https://localhost/site/?page=place&place=west
https://localhost/site/?page=location&location=cityname

To

https://localhost/site/place/west
https://localhost/site/location/city

I am able to change https://localhost/site/?page=place to https://localhost/site/place but not with another additional query as mentioned above.

htaccess

 RewriteEngine On
 #Redirect /site/?page=foobar to /site/foobar
RewriteCond %{THE_REQUEST} /site/(?:index\.php)?\?page=(.+)\sHTTP [NC]
RewriteRule ^ /site/%1? [L,R]
# Internally rewrite new path to the original one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?:site/)?(.+)/?$ /site/?page=$1 [L,QSA]

The above htaccess works for the following which is what I also need.

https://localhost/site/place
https://localhost/site/about
https://localhost/site/contact
like image 403
OneNation Avatar asked Feb 23 '26 06:02

OneNation


1 Answers

With your shown attempts, please try following htaccess rules file. Make sure to clear your browser cache before testing your URLs. New rules are clubbed to your already existing rules.

RewriteEngine ON
RewriteBase /site/
##New rules from here......
RewriteCond %{THE_REQUEST} \s/site/?\?page=([^&]*)&place=([^&]*)\s [NC]
RewriteRule ^ /site/%1/%2? [R=301,L]

# Internally rewrite new path to the original one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^site/([^/]*)/(.*)/?$ index.php?page=$1&location=$2 [NC,QSA,L]
like image 156
RavinderSingh13 Avatar answered Feb 25 '26 03:02

RavinderSingh13



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!