如何使用htaccess去掉拖尾?从 http://domain.com/directory/folder/?
所以它显示如下:
答案 0 :(得分:3)
不幸的是,无法通过RewriteRule
中的URI匹配检测到杂散尾部斜杠(显式删除了查询字符串),您也无法检查%{QUERY_STRING}
变量,因为在两种情况下,无论是否有尾随?,变量都将为空。您需要做的是使用实际请求通过%{THE_REQUEST}
变量匹配尾部斜杠:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /[^\ \?]*\?($|\ )
RewriteRule ^(.*)$ /$1? [L,R=301]
这将删除网址背面的流浪?。上面的正则表达式与请求匹配,它们看起来像这样:
GET /directory/folder/? HTTP/1.1
因此正则表达式尝试匹配GET
部分(也可以是HEAD
或POST
,其他方法存在,但不会影响您在浏览器中看到的内容URL地址栏),然后是请求的URI(/[^\ \?]*
),然后是迷路?,然后($|\ )
匹配请求的结尾(因为请求可以在没有 HTTP / 1.1 位)或空格。