The SEO experts says, there is no effect on SEO if your website URLs having .php, .htm or .html extension in there URL. Then why we need to remove these extensions from the URLs. As per experts says and my opinion that there are multiple benefits of not having file extensions in the URL, like:
- 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 is that we can easily change backend technology without affecting SEO of the pages.
- Read more about .htaccess here
To implement it, first you need to create a .htaccess file. Put it under the website document root. Then add the setting in the file as per your requirement to remove file extensions.
Removing .php Extension from URL
For example, You need to change URL from http://example.com/demo.php to http://example.com/demo. Edit .htaccess file and add following settings.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)$ $1.php [NC,L]
Now, If user accessed /demo
in the browser, it will show the content from /demo.php
. But still, if any user typed completed URL as http://example.com/demo.php, this will not redirect. Now you need to add some more rules to the .htaccess file.
RewriteEngine on RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L]
Removing .html Extension from URL
For example you need to convert your url from http://example.com/demo.html to http://example.com/demo. Edit .htaccess file and add following settings:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)$ $1.html [NC,L]
Now, If user accessed /demo
in the browser, it will show the content from /demo.html
. Now, You may need to redirect users which typed complete URL as http://example.com/demo.html to the new URL http://example.com/demo
RewriteEngine on RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^ %{REQUEST_URI}.html [NC,L]
I AM JUST TESTING……………
I am working html website my file name index.html but only show index ? Please help me which place to write a rewrite queries
І am regilar reader, how aree you everybody? This post posted at this websute
is truly pleasant.
Thanks for the very simplified article.
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]
What if i want to remove also query strings from url?
cool.. thanks man
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.
I want to remove all extensions from URL.
worked, tnx man
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);
}
});
thank’s nice one its works 100%
Thank you
This really helps.
After searching for almost a couple of Hour. This setting worked well! Thank you
first ofall thanks to give this code
this is ver important and usefull code
thanks very mouch
Thanks Man…
You help me out…
I Pasted The Code But Other Website Pages Are Not Working
Ex-:when i open http://www.researchpanel.co.in/about-us it will open home page
Hi Rahul,
If we have subfolder having different site, then url is not working.
For example, http://test.com/ is my main site and I have other site on http://test.com/site2.
So If I open http://test.com/site2 this url it shows me an error:
The requested URL /site1/site2/.php was not found on this server.
Do you have any solution for this?
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 Rahul,
Very easy to read and understand, however, I am having trouble in that it doesnt work for me, and I dont know why?
Please help me if you can?
Below is the url for the same where I want to remove .php extension
http://localhost/mysite/api/users.php/users/abcdf/12345
can you let me know how to remove PHP extension from specific php pages eg http://www.abc.com/contact-us.php
How to redirect http://www.abc.com/contact-us.php to http://www.abc.com/contact-us
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]
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”
Hi Krishna,
What URL do you need after rewrite it?
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]
Hi Ali,
I hope updated tutorial will help you more.
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
Please check for below directive in httpd.conf and set it to all.
Allowoverride all
It worked very well for me. Thanks
Really good post i am going to use in my website url rewritting
thanks
how to remove both?
I also wrote the small tutorial how to remove .php extension from url, hope you guys like it.
https://htmlcssphptutorial.wordpress.com/2015/08/24/remove-php-extension-from-url-using-htaccess/