带有mod_rewrite.htaccess的信息

带有mod_rewrite.htaccess的信息,.htaccess,optimization,mod-rewrite,.htaccess,Optimization,Mod Rewrite,我一直在努力从我的网站上删除.php。我希望它看起来像example.com/about,而不是example.com/about.php。我必须这样做,它将重写它,以便我可以将其键入example.com/about,但我希望当我单击网站上的链接转到example.com/about时,它会将url加载为example.com/about,而不是example.com/about.php。总的来说,我希望这样,每当有人在我的页面上加载任何内容时,url的末尾就不会有.php。我的.htacce

我一直在努力从我的网站上删除.php。我希望它看起来像example.com/about,而不是example.com/about.php。我必须这样做,它将重写它,以便我可以将其键入example.com/about,但我希望当我单击网站上的链接转到example.com/about时,它会将url加载为example.com/about,而不是example.com/about.php。总的来说,我希望这样,每当有人在我的页面上加载任何内容时,url的末尾就不会有.php。我的.htaccess现在看起来是这样的

RewriteEngine on

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

试试这个:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
您不必更改站点的结构,因为它只针对“格式错误”的URIhttp://x.com/page“最后没有延长期限。希望我能帮忙

但我希望当我点击我网站上的链接转到example.com/about时,它会将url加载为example.com/about,而不是example.com/about.php

要解决这个问题,您需要将站点的链接从
example.com/about.php
更改为
example.com/about
。当链接“在野外”仍然指向
.php
URL时,您仍然可以执行重定向,但除非您更改站点上的链接以删除扩展名,否则您的站点将导致每个页面加载两次命中服务器

至于重定向:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.php[\?\ ]
RewriteRule ^ /%1/ [L,R=301]
我甚至不确定您将php扩展名放回去的规则是如何工作的,因为您正在匹配尾随斜杠,但是当您使用
-f
检查文件时,您的文件名中将有一个错误的尾随斜杠:例如
/some/path/to/the_file/.php
而不是
/some/path/to/the_file.php

尝试:

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