在网址

时间:2016-07-24 14:51:57

标签: .htaccess url web routing

当我输入网址时,会自动添加一个尾部斜杠。

为什么?

例如,我输入:

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>

2 个答案:

答案 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文件。 但是没有尾随斜杠的请求会列出目录内容。