php - 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 是否指向文件而不是文件夹?而不是抛出错误,而是删除尾部斜杠以便显示文件?
解决方案
在 .htaccess 顶部插入此规则以删除非目录的尾部斜杠:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/+$
RewriteRule ^ %1 [R=301,NE,L]
推荐阅读
- javascript - 如何打破我的可观察对象的流程以使用 RXJS 调用另一个可观察对象?
- service-worker - This is a compatibility issue with the service workers for the webview of the ios device
- python - Conditional local import exception
- python - 如何在 Mac 上的 Python 虚拟环境中调用 MATLAB 库
- c# - 当方法包含数据库交互时作业未执行
- java - IntelliJ IDEA 的 Checkstyle 插件
- c# - Lucene.Net 跨文档中存在的多个字段搜索多个术语
- angular - Trying to filter an Observable but property doesn't exist on type
- python - Suspected order of functions/while loop glitches game out
- google-cloud-speech - Google Speech API - 数字表示为字符串?