Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to make a htaccess rule from id to name

I have a list of unique data:

Suppose I have the following data:

id    name
1     Jhon
2     Peter 
3     Mark
4     Scotty
5     Marry

I make a .htaccess rule for id:

RewriteRule brandlisting/(.*)/ site/brandlisting?id=$1 [L]
RewriteRule brandlisting/(.*) site/brandlisting?id=$1 [L]

my URL is:

http://localhost/mate/admin/site/brandlisting/3

this works for id.

Now I need a .htaccess rule for name, so I make a rule for it:

RewriteRule brandlisting/(.*)/ site/brandlisting?name=$1 [L]
RewriteRule brandlisting/(.*) site/brandlisting?name=$1 [L]

http://localhost/mate/admin/site/brandlisting/Mark

When I used the above URL I was faced with following error in the console:

"NetworkError: 400 Bad Request - http://localhost/mate/admin/site/brandlisting/Mark"

and in browser it shows:

Error 400 Your request is invalid.

My current .htaccess file

RewriteEngine on

RewriteCond %{HTTP_HOST} ^localhost/mate/admin$ [NC,OR]
RewriteCond %{HTTP_HOST} ^localhost/mate/admin$

RewriteCond %{REQUEST_URI} !wordpress/
RewriteRule (.*) /wordpress/$1 [L]

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

#RewriteRule brandlisting/(.*)/ site/brandlisting?id=$1 [L]
#RewriteRule brandlisting/(.*) site/brandlisting?id=$1 [L]

RewriteRule brandlisting/(.*)/ site/brandlisting?name=$1 [L] 
RewriteRule brandlisting/(.*) site/brandlisting?name=$1 [L] 
like image 214
Harish Mahajan Avatar asked Jan 20 '17 06:01

Harish Mahajan


People also ask

What is QSA in htaccess?

QSA = Query String Append. This rule appends the GET query string which results from the ReWrite rule to the initial GET query string sent by the browser.

Where do I put .htaccess file?

htaccess file location is most commonly found in your website's public_html folder. You can access your . htaccess file in a few different ways: From your hosting account's file management (such as via cPanel)


1 Answers

I am starting with your current .htaccess you have crunch all the available rule which meets your needs in one single .htaccess for example rule for wordpress it should be in directory where your wordpress is installed.

Your rule as per your requirement should be like this if you are trying in root directory,

RewriteEngine on

RewriteBase /mate/admin/

RewriteRule site/brandlisting/([\d]+)/?$ site/brandlisting.php?id=$1 [L]
RewriteRule site/brandlisting/([a-zA-Z]+)/?$ site/brandlisting.php?name=$1 [L]

And for wordpress you directory you can create seperate .htaccess where you can put your rule index.php.

like image 165
Abhishek Gurjar Avatar answered Sep 30 '22 04:09

Abhishek Gurjar