Htaccess 如何从文件而不是目录中删除尾部斜杠

Htaccess how to remove trailing slash from file but not directory

我的网站使用 PHP 编码。在我的 htaccess 文件中,我使用以下命令从我的 url 中删除 php 文件扩展名:

 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
 RewriteRule ^/?(.*)\.php$ / [L,R=301]
 RewriteCond %{REQUEST_FILENAME}\.php -f
 RewriteRule ^/?(.*)$ /.php [L]

示例:www.mysite.com/folder/file.php 将定向到 www.mysite.com/folder/file

如果我在没有添加尾部斜杠的情况下导航到目录,服务器会自动添加一个:

示例:www.mysite.com/folder 将定向到 www.mysite.com/folder/

如果我改为导航到文件并添加尾部斜杠,我会收到内部服务器错误

是否有我可以添加到我的 htaccess 文件的代码,服务器可以在其中确定 url 是文件而不是文件夹?而不是抛出错误,删除尾部斜杠以便显示文件?

在您的 .htaccess 顶部插入此规则以删除非目录的尾部斜杠:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/+$
RewriteRule ^ %1 [R=301,NE,L]