Friendly URLs for static .php files using .htaccess

Setting up an .htaccess file has been a nigtmare. Let’s have a closer look into it and its rules/conditions.

In case you’re new to the force, .htaccess files are, according to the htaccess-guide.com:

.htaccess is a configuration file for use on web servers running the Apache Web Server software.

By manipulating it, you can do loads of things. Redirects, block access to folders and files, set caching time limits for site files (Google recommends doing it), etc.

I’ll go through a few tricks to generate Friendly URLs for static .php files on your website.

Friendly URLs for way360group.com

I am currently building way360group’s website, by the time this post goes live, the site will have been published so have a look at it here: www.way360group.com

By friendly URLs I mean something like displaying www.way360group.com/about-us/ instead of www.way360group.com/about-us.php.

No one wants users to feel confused when navigating through the site, and, showing file extensions may scare them — and you also may get punished by Search Engines ranking systems, which tend to rank you down in case your URL’s are not ~eligible~.

I will it keep it really simple here, and this case only applies if you’ve got static files on your server — it won’t create dynamic URL’s.

Let’s get started:

First things first, you have to enable the Rewrite Engine:

RewriteEngine On

Now that your server is allowed to rewrite URL’s, you have to set Rules.

RewriteRule ^contact/?$ contact.php

This rules says that in case the URL “www.domain.com/contact.php” is being accessed, it will be rewritten to “www.domain.com/contact/”.

Simple, hey? Yes, but, you have to do it for all files and make sure your menu has it all correct.

In my case, my .htaccess is looking like this:

RewriteEngine On
RewriteRule ^contact/?$ contact.php 
 RewriteRule ^what-is-corporate-social-responsibility/?$ what-is-corporate-social-responsibility.php 
 RewriteRule ^about-us/?$ about-us.php 
 RewriteRule ^latest-projects/?$ latest-projects.php 
 RewriteRule ^join-our-newsletter/?$ join-our-newsletter.php 
 RewriteRule ^error/?$ errorpage.php

Once I’ve got only 6 pages, wasn’t a big deal for me to write all rules.

That’s it! Hope your URLs are friendly as mine are by now.

Additional .htaccess rules

On top of the awesome and super-friendly URLs, you’re also able to manipulate where to redirect users in case they encounter an error:

//Custom 400 errors
ErrorDocument 400 /404.php
//Custom 401 errors
ErrorDocument 401 /404.php
//Custom 403 errors
ErrorDocument 403 /404.php
//Custom 404 errors
ErrorDocument 404 /404.php
//Custom 500 errors
ErrorDocument 500 /404.php

And now that Google’s crazy about security on web, “forcing” your users to use your https:// comes handy. You can achieve that by setting up this rule:

RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Some extra references

Added Bytes — URL Rewriting for Beginners
https://www.addedbytes.com/blog/url-rewriting-for-beginners

.htaccess Browser Based Generator — this is GOLD!
http://www.htaccessredirect.net/