htaccess如何删除尾随问号

时间:2012-11-04 07:17:32

标签: .htaccess

如何使用htaccess去掉拖尾?从 http://domain.com/directory/folder/

所以它显示如下:

http://domain.com/directory/folder/

1 个答案:

答案 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部分(也可以是HEADPOST,其他方法存在,但不会影响您在浏览器中看到的内容URL地址栏),然后是请求的URI(/[^\ \?]*),然后是迷路,然后($|\ )匹配请求的结尾(因为请求可以在没有 HTTP / 1.1 位)或空格。