使用.htaccess删除.php并重定向到其非.php版本
我有一个网站,我需要删除每个文件的.php扩展名,然后将指向任何包含.php扩展名的文件的链接重定向到同一个文件,但没有.php扩展名 我找到了以下代码。这非常有用,但文件夹中包含的任何内容都将重定向到根目录,如本例所示: 重定向到 (不带.php)使用.htaccess删除.php并重定向到其非.php版本,php,apache,.htaccess,browser,Php,Apache,.htaccess,Browser,我有一个网站,我需要删除每个文件的.php扩展名,然后将指向任何包含.php扩展名的文件的链接重定向到同一个文件,但没有.php扩展名 我找到了以下代码。这非常有用,但文件夹中包含的任何内容都将重定向到根目录,如本例所示: 重定向到 (不带.php) 代码如下: 重新启动发动机 #Remove .php extension RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRu
代码如下: 重新启动发动机
#Remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
#Redirect without .php
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ /$1 [R=301,L]
有什么问题吗?用此规则替换您的规则,然后在新浏览器中重新测试,或者完全清除浏览器缓存:
RewriteEngine On
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
## To internally rewrite /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
这是
文件夹/
目录中的.htaccess吗?不,不是。我只把它放在根目录中。我应该把它复制到每个文件夹吗?现在文件夹中的所有内容都重定向到主页,没有任何文件名。也不起作用。这些规则正在我的live网站上运行,以删除.php
扩展,因此规则没有问题。当然,.php删除工作正常。但对于文件夹中的任何文件,当我单击指向它的链接时,它会将我重定向到主页。指向example.com/folder/file.php的链接使我进入example.com指向example.com/folder/file.php的链接使我进入example.com
在我建议的这两条规则中肯定不会发生。您的.htaccess中还有其他规则吗?还要测试Apache服务器端配置中是否有任何其他.htaccess或规则。还要检查您的Apache版本。