PHP重写URL以删除.PHP扩展名

PHP重写URL以删除.PHP扩展名,php,.htaccess,Php,.htaccess,我正在做一个项目,我决定从我的应用程序的URL中去掉.php扩展名。我成功地使用了下面给出的htaccess代码。但问题是,如果手动键入或从历史记录加载,页面仍然使用.php扩展名加载 我当前的.htaccess代码 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 我希望它总是加载www.example.com/dashboard,除了www.example.co

我正在做一个项目,我决定从我的应用程序的URL中去掉.php扩展名。我成功地使用了下面给出的htaccess代码。但问题是,如果手动键入或从历史记录加载,页面仍然使用.php扩展名加载

我当前的.htaccess代码

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
我希望它总是加载
www.example.com/dashboard
,除了
www.example.com/dashboard.php
,即使dashboard.php是手动输入的

更新的.htaccess代码

RewriteEngine On
RewriteBase /dateapp/
RewriteRule ^([^\.]+).php$ $1 [R]

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

您可以添加重定向作为第一条规则

RewriteEngine On
RewriteRule ^([^\.]+).php$ /$1 [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,END]
您必须使用
END
标志而不是
L
,否则重定向将以无限循环结束。如果.htaccess在您的webroot文件夹中,这将起作用

如果在“文件夹”子文件夹中有.htaccess,则必须添加
RewriteBase

RewriteEngine On
RewriteBase /folder/
RewriteRule ^([^\.]+).php$ $1 [R]

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

您可以在
dateapp/.htaccess
中使用此代码:

RewriteEngine On
RewriteBase /dateapp/

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

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

它将我带到根URL,即localhost/dashboard.php,但我的文件位于localhost/folder/dashboard.php中。此外,它没有删除扩展名。您在webroot或“文件夹”子文件夹中有.htaccess吗?@AurazoScript我在子文件夹中为.htaccess添加了一个版本,而不是webroot。我用文件夹名替换了“文件夹”,但当尝试使用.php扩展名访问页面时,它退出并说“此页面没有正确重定向”@AurazoScript您可以将编辑的htaccess添加到您的问题中吗?我已经测试了两种变体,它们对我来说都很好。