当我输入网址时,会自动添加一个尾部斜杠。
为什么?
例如,我输入:
example.com/path
它变成了:
example.com/path/
我的.htaccess文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
AddType 'text/css; charset=UTF-8' css
</IfModule>
答案 0 :(得分:0)
要删除尾部斜杠,您可以使用:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]
答案 1 :(得分:0)
如果您的URL指向某个目录,那么出于安全原因,Apache的mod_dir
模块会自动添加一个尾部斜杠。
Apache mod_dir
reference on directory slash
请注意,您可以通过放置此指令来更改此行为:
DirectorySlash Off
但请记住此安全警告。
安全警告
关闭尾部斜杠重定向可能会导致信息泄露。考虑
mod_autoindex
处于活动状态(Options +Indexes
)并且DirectoryIndex
设置为有效资源(例如,index.html
)并且没有为该URL定义其他特殊处理程序的情况。在这种情况下,带有斜杠的请求将显示index.html
文件。 但是没有尾随斜杠的请求会列出目录内容。