Akina
Akina

Reputation: 33

How to create .htaccess for multiple parameters in URL?

I need using this .htaccess file. It only changes the URL from www.mydomain.com/users/user?usernam=myname123&profile=myprofile123&data=mydata123 to www.example.com/users/myname123/myprofile123/mydata123 .

i use

RewriteEngine On
RewriteRule ^user\.php$ - [L]
RewriteRule ^([0-9a-zA-Z\-_.]*)/?$ /users/user.php?username=$1&profile=$2&data=$3[L,QSA]

htaccess in users folder

not work

Upvotes: 1

Views: 806

Answers (1)

RavinderSingh13
RavinderSingh13

Reputation: 133760

With your shown samples, could you please try following rules. This will take anything in REQUEST_URI starting.

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /([^/]*)/([^/]*)/([^/]*)/([^/]*)/?\s 
RewriteRule ^(.*) /%1?username=%2&profile=%3&data=%4 [NE,L,NC]

OR(either use above or following one) in case you want to match users in URI then run rules then try following.

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /users/([^/]*)/([^/]*)/([^/]*)/?\s 
RewriteRule ^(.*) /users?username=%1&profile=%2&data=%3 [NE,L,NC]

Explanation: Adding detailed explanation for above.

  • RewriteEngine ON: Enabling RewriteEngine here to enable mod rule writing.
  • RewriteCond %{QUERY_STRING} ^$: Checking condition if query string is NULL then go further in rules.
  • RewriteCond %{THE_REQUEST} /users/([^/]*)/([^/]*)/([^/]*)/?\s: Matching regex in THE_REQUEST from /users to till spaces and capturing 3 groups values into back references to be used later.
  • RewriteRule ^(.*) /users?username=%1&profile=%2&data=%3 [NE,L,NC]: Using url rewrite to change URI to as per OP's request which has back references values in it.

Upvotes: 2

Related Questions