We are going to use .htaccess (hypertext access) rewrite rules to achieve these clean URLs. The .htaccess file provide a directory level configuration that is supported by several web servers such as Apache.
Our post for today covers the following contents:
1.0 Existing Apache .htaccess Rewriterule Examples
2.0 Four Apache .htaccess Rewriterule Example Codes
2.1 URL with two parameters: letter and number
2.2 URL with one parameter: name of the PHP file
2.3 URL with one parameter: numbers
2.4 URL with one parameter: numbers with underscore
3.0 Complete .htaccess Code Used
4.0 Apache .htaccess RewriteRule Resources
1.0 EXISTING OR LIVE APACHE .HTACCESS REWRITERULE EXAMPLES
Below are other example websites with clean URLs.

Of couse you know this blog, don’t you? :))

Chris’ blog

David’s blog
2.0 FOUR APACHE .HTACCESS REWRITERULE EXAMPLES
Our .htaccess and PHP files are placed in the “htaccess-clean-urls” folder.
.htaccess uses regular expressions to identify which PHP file will be loaded on the browser, based on the parameter(s) given.
We have 4 example codes below. Please note that “localhost” refers to “yoursite.com”. I was using my local server when I did these examples so please keep it in mind.
2.1 URL with two parameters: letter and number
This URL:
Is equivalent to this clean URL:
.htaccess code used:
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ parameter_letter_and_number.php?param= $1 ¶m2= $2 [NC]
|
PHP page used: parameter_letter_and_number.php
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" />
<title>Clean URL with .htaccess by http:
</style>
</head>
<body>
<h1>Parameter: Letter and Number ONLY. This is parameter_letter_and_number.php</h1>
<?php
echo "PARAMETER VALUE 1: " . $_REQUEST [ 'param' ];
echo "<br />" ;
echo "PARAMETER VALUE 2: " . $_REQUEST [ 'param2' ];
?>
</body>
</html>
|
Output screenshot:
2.2 URL with one parameter: name of the PHP file
This URL:
Is equivalent to this clean URL:
.htaccess code used:
RewriteRule ^([a-z]+)\/?$ $1 .php [NC]
|
PHP pages used:
login.php
<! DOCTYPE HTML>
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" />
</ style >
</ head >
< body >
< h1 >Login. This is login.php</ h1 >
</ body >
</ html >
|
register.php
<! DOCTYPE HTML>
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" />
</ style >
</ head >
< body >
< h1 >Register. This is register.php</ h1 >
</ body >
</ html >
|
Output Screenshots:
2.3 URL with one parameter: numbers
This URL
Is equivalent to this clean URL:
.htaccess code used:
RewriteRule ^([0-9]+)\/?$ parameter_number.php?param= $1 [NC]
|
PHP page used: parameter_number.php
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" />
<title>parameter is number - Clean URL with .htaccess and PHP by http:
</style>
</head>
<body>
<h1>Parameter: Number ONLY. This is parameter_number.php</h1>
<?php echo "PARAMETER VALUE: " . $_REQUEST [ 'param' ]; ?>
</body>
</html>
|
Output Screenshot:
2.4 URL with one parameter: numbers with underscore
This URL:
Is equivalent to this clean URL:
.htaccess code used:
RewriteRule ^([0-9_]+)\/?$ parameter_number_and_underscore.php?param= $1 [NC]
|
PHP page used: parameter_number_and_underscore.php
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" />
<title>parameter is number and underscore- Clean URL with .htaccess and PHP by http:
</style>
</head>
<body>
<h1>Parameter: Number and Underscore ONLY. This is parameter_number_and_underscore.php</h1>
<?php echo "PARAMETER VALUE: " . $_REQUEST [ 'param' ]; ?>
</body>
</html>
|
Output Screenshot:
3.0 COMPLETE .HTACCESS CODE USED
The following codes are the ones we used in the examples above, put into one .htaccess file.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ parameter_letter_and_number.php?param= $1 ¶m2= $2 [NC]
RewriteRule ^([a-z]+)\/?$ $1 .php [NC]
RewriteRule ^([0-9]+)\/?$ parameter_number.php?param= $1 [NC]
RewriteRule ^([0-9_]+)\/?$ parameter_number_and_underscore.php?param= $1 [NC]
</IfModule>
|