Remove .php from urls with htaccess
Try this code for hiding .php (will work both ways):
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
Cbas
Updated on May 26, 2020Comments
-
Cbas almost 4 years
EDIT: current .htaccess file:
Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## hide .php extension snippet # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.*?)/?$ $1.php [L]
My site is hosted in a subfolder of a domain connected to a large hosting account.
basesite /iioengine /forums /.htaccess //file works /.... //other MyBB content /demos.php /index.php //iioengine.com (homepage) /.htaccess //file doesn't work /... //other iioengine php pages
Is the issue that I'm using two different htaccess files?
Here is a link that needs to work: http://iioengine.com/demos
I noticed that this current htaccess file disrupts all of the forums URL's as well
This no longer works: http://iioengine.com/forums/Forum-Box2D
EDIT: Thanks for reopening, I have made some progress. Here is my current htaccess file:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d </IfModule>
I still get 404 pages, but if I put this line in:
RewriteRule . /index.php [L]
all non-'.php' requests get forwarded to the homepage... So mod_rewrite is definitely enabled, it's just not working right. Anyone know what the issue could be?
EDIT: This is not a duplicate - none of the other solutions work for me. My question is not do solutions exist, its why aren't they working for me. No one has been able to resolve this, I have been trying many solutions myself. Isn't the point of this forum to get solutions to specific issues?
Allow me to clarify...
I have MyBB running in a subfolder and its rewrites work fine. This link, for instance, works: http://iioengine.com/forums/Forum-Box2D
All the php pages that are not part of MyBB still have the .php extension in their URLs - I am trying to remove these but nothing is working. Example: http://iioengine.com/demos
... [original post]
There is obviously a lot of information out there about this, but I have tried almost a dozen different solutions and have not gotten past a 404 page.
Here is my site: http://iioengine.com/, all pages are php, and everything other than the homepage and all of the forums pages have a '.php' at the end of their URL that I would like to remove.
In addition to redirecting non-'.php' requests to the correct pages, I would also like to remove the '.php' part even when it is part of the request (because all of my content already specifies '.php' in its hyperlinks).
This is what I have so far, mostly taken from this post, but it doesn't work, I get a 404 page.
RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA] RewriteCond %{REQUEST_URI} ^/(.*).php$ RewriteRule ^(.*)$ %1 [L,QSA]
what do I need in my htaccess file to remove the file extension from the URL in all cases? Thanks
-
Cbas about 11 yearsI think there is an issue with how my htaccess file is being read or interpreted. This gives me a 404 page on each request
-
anubhava about 11 yearsPls post your latest .htaccess in your question. Also provide more details like what URI did you try and little bit info about your directory structure.
-
anubhava about 11 yearsI think I know what's the problem and it can be fixed. Just need 1 more answer from you. What is DOCUMENT_ROOT for
http://iioengine.com/
and where in DOCUMENT_ROOT you've placed above .htaccess file? -
Cbas about 11 yearsindex.php and .htaccess are both in the iioengine folder, which is a direct subfolder of my hosting account's root
-
anubhava about 11 yearsBut I guess DOCUMENT_ROOT for
http://iioengine.com/
is iioengine folder isn't it? You can putphpinfo();
in a php file to get that information. -
Cbas about 11 yearsyes it is. here's an info page if it helps iioengine.com/phpinfo.php - I need to remove the htaccess file for you to view it though
-
anubhava about 11 yearsOk got it, I edited my answer based on that
phpinfo()
. Put this edited code in the same .htacess and try it again. -
Cbas about 11 yearsIt's definitely removing the extensions, but I'm still getting 404 pages everywhere - including the forums
-
anubhava about 11 yearsMade another edit, pls try now. Also it would be better if we move this discussion to chat to sort this out.
-
Cbas about 11 years
-
Sergio over 10 yearsThe previous example works very well when the url ends in a single .php file eg. mywebsite/file.php But, it removes everything else when I have additional parameters in the url e.g. mywebsite/file.php/param1. Does anyone know how to remove the .php extension, but keep or attach the other parameters? I would like something like mywebsite/file.php/param1 to become mywebsite/file/param1
-
anubhava over 10 years@Sergio: That will require little different approach. Feel free to open a new question and post a link here. Its better not to edit this 2+ yrs old answer.