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]
我的网站使用 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]