What is .htaccess and how can you remove extension from url using htaccess
Hello Guys htaccess is really useful and an important file to be included in our directory where your website files are located. Its main purpose is to remove extension and redirect visitors.
What is .htaccess?
.htaccess will remove any extension from url like .php, .html. It works only on server so you need apache server to run .htaccess file. When you run the server it detects the .htaccess file and configures it automatically.
It does not have any file name the extension .htaccess itself is the file name. It isn’t file.htaccess
, it is simply .htaccess
.
The .htaccess file affects the directory and the sun-directories where it is located. For example if there is one .htaccess
file located in your root directory of yoursite.com, it would affect yoursite.com/content/, yoursite.com/content/images/, etc.
But you don’t want to rewrite the url in some directories then place a separate .htaccess file and that directory will follow that configuration.
With .htaccess you can:
- Rewrite URLs
- Specify your own Error Documents
- Password protect a specific directory
- Block users by IP
- Redirect the user to different page
Rewrite URLs
To remove .php extension from your url yoursite.com/about.php to yoursite.com/about you have to add the following code in you .htaccess file.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
If you want to remove .html extension from your url yoursite.com/about.html to yoursite.com/about you have to add the following code in you .htaccess file.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
If you want to remove .htm extension from your url yoursite.com/about.htm to yoursite.com/about you have to add the following code in you .htaccess file.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.htm [NC,L]
Error Document
You can create your custom error page which is very useful. It allows you to display friendly error, explaining possible solutions and guiding the visitor back into your web site content. But if you use the basic error of the browser it will leave the visitor clueless and they will be lost.
Use this following code and create a 404.php file in your directory.
RewriteEngine on #if requested resource isn't a file # and isn't a directory # then serve local error script RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* 404.php [L]
Password Protect a specific directory
Password protection system is used in apache web server and is one of the most important use of .htaccess. You can easily secure a directory of you website by using a username and password. The login procedure for these secure directories is handled automatically by the web browser using a pop-up login interface (you’ve probably seen these before). Passwords are also encrypted using one of the best encryption methods available which ensures login credentials are kept secure.
This is the .htaccess file:
AuthType Basic AuthName "restricted area" AuthUserFile /your site path /.htpasswd require valid-user
This is the htpasswd file you can use this link to generate username and password
Redirect
It helps us to redirect our visitors from one link to another. For example if you have moved some of your content from old link to new link, you can redirect your visitors using .htaccess redirect. Redirect enables us to change the url
See below example I am redirecting http to https
RewriteEngine On RewriteCond %{HTTP_HOST} !^http://site.com/$ [NC] RewriteRule ^(.*)$ https://site.com/$1 [L,R=301]
Here i am redirecting non www to www
RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301
Here i am redirecting www to non www
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.com$ RewriteRule ^/?$ "http\:\/\/example\.com\/" [R=301,L]
Block users by IP
It is really helpful feature of .htaccess. Apache server enables us to deny access to specific IP address or allow access. It is really useful when you want to limit certain parts of website to specific users like administration area.
This code is for denying certain IP order allow,deny deny from 255.0.0.0 deny from 123.45.6. allow from all This code is for allowing certian IP order allow,deny allow from 255.0.0.1 deny from all
This above code will deny IP 255.0.0.0. The second line will block all the IP starting from 123.45.6.50 or 123.45.6.255 etc. It will allow 255.0.0.1.
.htaccess is one of the most important file in the process of website development. There is no need to learn this specifically, cause you can get ton of documentation and codes online.
Get all config here.