Desi blogger is a blog created to solve all your problems basically related to things that were less or never explained on the internet. I am Amit. I am an admin and author on this blog. I write posts to help people and make their day just because I love to get a sweet "thank you" from them. Visit desiblogger blog to learn something interesting and something new everyday.

Advertisement

LightBlog

Thursday, 5 December 2019

Rewriting a complax and long URL using htaccess | mod-rewite tutorial

Rewriting a complax URL using htaccess

In this post I will show you how to rewrite a long URL that has multiple query string perameters. This two minutes read post is for beginners who wish to learn Apache URL rewriting.
We will convert the following URL :

http://example.com/user.php?name=foobar&location=somewhere&id=123
To
http://example.com/user/foobar/somewhere/123

Our original URL http://example.com/user.php?name=foobar&location=somewhere&id=123 contains three query string perameters name , location and id. The URL is long, hard to remember and not search engine friendly . It needs to be converted into a clean format so that it can easily be indexed by search engines.

The new URL http://example.com/user/foobar/somewhere/123 is short , easier to remember and search engine friendly. It contains 4 path segments user , foobar , somewhere and 123 each points to the query string except the first one user as its there just for naming purpose.

Here is the rule we can use to convert our complex URL into short one


RewriteEngine on

RewriteRule ^user/foobar/somewhere/123$ /user.php?name=foobar&location=somewhere&id=123 [L]
The above rule create the short URL. It allows you to access the original query string URL using the new short URL. If you visit example.com/user/foobar/somewhere/123 the rule will internally map the URL to the original query string URL.
The rule above applies to a single Query string URL or static path. If the URL is dynamic you can use Regular expression based pattern instead of the static pattern.

RewriteEngine on

RewriteRule ^user/(.+)/(.+)/(.+)$ /user.php?name=$1&location=$2&id=$3 [L]
The regular expression pattern ^user/(.+)/(.+)/(.+)$ matches any URL path string starting with user followed by /name/location/id . The pattern matches /user/name/location/id . The $n variables reffers to the match in capture group (.+) where $1 is the match from the first group.
You can manually modify the rule if your URL has more then three perameters . For example if your original URL has 4 query perameters then you can add an additional capture group to the pattern and link the match to the destination path using $4 variable.
I hope you enjoyed reading this post. Thank you.

No comments:

Post a comment

Adbox