首页 > 解决方案 > Htaccess如何从文件中删除尾部斜杠而不是目录

问题描述

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

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

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

如果我导航到一个目录而不添加斜杠,服务器会自动添加一个:

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

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

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

标签: php.htaccessapache2

解决方案


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

RewriteEngine On

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

推荐阅读