When it comes to creating a website, one of the most important things to consider is the user experience. This includes not only the design and functionality of the website but also the structure of the URLs.

Advertisement

A clean and simple URL structure can make it easier for users to understand the organization of the website and improve the overall navigation. Additionally, it can also help with search engine optimization (SEO) by making it easier for search engines to crawl and index your pages.

The benefits of hiding file extensions:

  • Back-end technology is hidden from end users. But it’s still not hard to identify the technology for experts.
  • The best pros of this are that we can easily change backend technology without affecting the SEO of the pages.
  • Read more about .htaccess here

One way to improve the structure of your URLs is by removing the file extensions, such as .php and .html. This can make your URLs appear cleaner and more professional, and can also help to hide the technology used to build the website.

The process of removing file extensions from URLs can be done using the .htaccess file. The .htaccess file is a configuration file used by the Apache web server and can be used to make changes to the server’s behavior, including URL rewriting.

Removing .php Extension from URL

For example, You need to change the URL from http://example.com/about.php to http://example.com/about.

Create a new `.htaccess` file or edit an existing one. This file should be placed in the root directory of your website. Add the following code to the `.htaccess` file:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]

Now, If the user accessed /about in the browser, it will show the content from /about.php. But still, if any user typed the completed URL as http://example.com/about.php, this will not redirect. Now you need to add some more rules to the `.htaccess` file.


RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

This code tells the server to turn on the rewrite engine and then checks if the requested URL is not a directory and if the file with a `.php` extension exists. If both conditions are met, it rewrites the URL by removing the .php extension.

Removing .html Extension from URL

For example, you need to convert your URL from http://example.com/about.html to http://example.com/about. Edit the `.htaccess` file and add the following configuration:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.html [NC,L]

Now, If the user accessed /about in the browser, it will show the content from /about.html. Now, You may need to redirect users which typed the complete URL as “http://example.com/about.html” to the new URL “http://example.com/about”.


RewriteEngine on
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]

It is important to note that removing file extensions from your URLs can have an impact on your website’s functionality. For example, if you have links or scripts on your website that are hardcoded with the file extensions, they will no longer work. Therefore, it’s a good idea to test your website thoroughly after making these changes to ensure that everything is working as expected.

Additionally, you should also keep a backup of your original `.htaccess` file, in case you need to revert the changes.

Conclusion

In conclusion, removing file extensions from your URLs can make them appear cleaner and more professional, and can also help to improve the user experience and SEO. By using the `.htaccess` file to remove `.php` and `.html` extensions, you can make this change easily and effectively. Remember to test your website thoroughly after making these changes to ensure that everything is working as expected.

Share.

35 Comments

  1. Ganesh Kumar on

    I am working html website my file name index.html but only show index ? Please help me which place to write a rewrite queries

  2. Hi, Rahul.. thanks it works,

    but, what if :

    localhost/test/index.php
    to
    localhost/test/index.html or another ext.

    automatic rewrite rules same as the your content.. please help ! thanks before

    • The code was provided in this blog only.

      RewriteEngine on
      RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
      RewriteRule ^ /%1 [NC,L,R]

      RewriteCond %{REQUEST_FILENAME}.html -f
      RewriteRule ^ %{REQUEST_URI}.html [NC,L]

  3. Hi, In my .htaccess write below code for URL displaying purpose
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^request-quote?$ quote.php [NC,L]

    my URL now like https://mywebsite,com/request-quote this one show quote.php when google indexed old URL’s are like https://mywebsite.com/quote.php in this case we need URL change to same like “https://mywebsite,com/request-quote”. Any possibility I am struct here 16 hours I researched but no use please help me.

  4. It working but with ajax i facing some variable value passing issue , (undefined warning )

    var dataString = ’email=’+ email + ‘&password=’+ password + ‘&jsremem=’+jsremem+ ‘&previousurl=’+previousurl;

    $.ajax({
    type: “POST”,
    url: “ajaxlogin.php?type=abc”,
    data: dataString,
    cache: false,
    success: function(result){ alert(result);
    }
    });

  5. Hi Rahul,

    Its working well with url but when I try to submit the form, I loose all the values. I cannot submit the form.
    What is the reason?

    • Hi Gili,

      The updated tutorial will help you more to achieve your tasks. For the single file, I hope below .htaccess rules should work for you.

      RewriteEngine on
      RewriteCond %{THE_REQUEST} /contact-us.php [NC]
      RewriteRule ^ /contact-us [NC,L,R]

      RewriteCond %{REQUEST_FILENAME}.php -f
      RewriteRule ^ %{REQUEST_URI}.php [NC,L]

  6. thank you for this code
    but what to do if i want to remove .html extensionform URL like this “/WordPress/oepl/projecttask?p=project_detail.html&p_id=94836894-0813-xxxx-xxxx-xxxxxxxxxxxx”

  7. I write this code but I still have a problem. When I manually type websitename/pagename.php it will not remove the extension (.php) please help to resolve this.

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^([^/.]+)$ $1.php [L]

  8. Hi, Shall i know, its work on local host xampp server, i try it on local but not getting it, can you help to give the solution for it

Exit mobile version