Home PHP

Apache .htaccess RewriteRule Examples with PHP for Clean URLs

Our code for today will make your website URLs clean and attractive. Clean URLs are user and SEO friendly, it does not contain any query string like:

...page.php?param1=something&id=1111

Thus, giving our users and search engines (like Google) an idea what your link is all about once it was shared to social media or indexed by Google or Bing.

.htaccess rewriterule examples - first example is smashing magazine

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?

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

Chris' blog

Chris' blog

David’s 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:

http://localhost/htaccess-clean-urls/parameter_letter_and_number.php?param=post¶m2=143

Is equivalent to this clean URL:

http://localhost/htaccess-clean-urls/post/143

.htaccess code used:

RewriteRule ^([a-z]+)\/([0-9]+)\/?$ parameter_letter_and_number.php?param=$1&param2=$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 https://codeofaninja.com/</title>
        
        </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:

.htaccess RewriteRule Example - parameter and number

2.2 URL with one parameter: name of the PHP file

This URL:

http://localhost/htaccess-clean-urls/login.php
http://localhost/htaccess-clean-urls/register.php

Is equivalent to this clean URL:

http://localhost/htaccess-clean-urls/login/
http://localhost/htaccess-clean-urls/register/

.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" />
        <title>login - Clean URL tutorial with .htaccess and PHP by https://codeofaninja.com/</title>
        
        </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" />
        <title>register - Clean URL with .htaccess and PHP by https://codeofaninja.com/</title>
        
        </style>
    </head>
<body>

<h1>Register. This is register.php</h1>

</body>
</html>

Output Screenshots:

login page clean url

register page rewriterule example

2.3 URL with one parameter: numbers

This URL

http://localhost/htaccess-clean-urls/parameter_number.php?param=5254

Is equivalent to this clean URL:

http://localhost/htaccess-clean-urls/5254/

.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 https://codeofaninja.com/</title>
        
        </style>
    </head>
<body>

<h1>Parameter: Number ONLY. This is parameter_number.php</h1>
<?php echo "PARAMETER VALUE: " . $_REQUEST['param']; ?>

</body>
</html>

Output Screenshot:

htaccess rewriterule number example

2.4 URL with one parameter: numbers with underscore

This URL:

http://localhost/htaccess-clean-urls/parameter_number_and_underscore.php?param=143_5254

Is equivalent to this clean URL:

http://localhost/htaccess-clean-urls/143_5254/

.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 https://codeofaninja.com/</title>
        
        </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:

htaccess rewriterule example - number and underscore

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&param2=$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>

4.0 .htaccess RewriteRule Resources

If you want to learn more, here's a mod_rewrite or regex cheat sheet.
An In Depth Guide to mod_rewrite for Apache
Apache mod_rewrite

Download Source Code

You can download all the code used in this tutorial for only $9.99 $5.55!

THANK YOU!

has been added to your cart!

Powered by Easy Digital Downloads

Thank you!

have been added to your cart!

Powered by Easy Digital Downloads

If you have some questions or want to add more Apache .htaccess RewriteRule examples, please drop it in the comments section below! I will update this post once you did, thanks for your contribution!

shopping-cart-in-php-sessions
Home PHP

PHP and MySQL Shopping Cart Tutorial – Using SESSIONS To Store Cart Data

shopping-cart-in-php-sessions

Previously, we learned how to build a Shopping Cart with PHP & MySQL where we used a database to store cart items. Today, we will learn another version of it. We will use PHP session variables to store cart items.

Read more

Export Column Data with PhpMyAdmin

Sometimes you would want to export your MySQL data, but on a specific number of columns only.

For example, you have a users table that has has more than two columns (firstname, lastname, username, password, etc.) and you only want to export the user's names and usernames.

In short you are exporting only two columns from your users table, and PhpMyAdmin can help us with that.

Here's how to do that:

1. Find you table and to to structure tab. In this example, we have "coan" database and "users" table.

2. Select two columns you want to export and click "Browse" (see red arrow below). We selected the "firstname" and "username".

3. Now you can export the selected columns by clicking "Export" (see red arrow) below the page.

4. Now you can "quick export" it. An SQL file will be downloaded, containing your exported column data.

You can play around with "custom" export if you want, there will be options like entering specific number of rows you want to be exported.