2

如何使用 htaccess 去除尾随?来自 http://domain.com/directory/folder/

所以它显示如下:

http://domain.com/directory/文件夹/

4

1 回答 1

3

不幸的是,没有办法通过 a 中的 URI 匹配来检测杂散的尾部斜杠RewriteRule(查询字符串被显式删除),您也无法检查%{QUERY_STRING}变量,因为在这两种情况下,有或没有尾随? ,变量将为空。您需要做的是使用实际请求通过%{THE_REQUEST}变量匹配尾部斜杠:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /[^\ \?]*\?($|\ )
RewriteRule ^(.*)$ /$1? [L,R=301]

那会消除流浪位于 URL 的后面。上面的正则表达式匹配一个请求,它们看起来像这样:

GET /directory/folder/? HTTP/1.1

所以正则表达式尝试匹配GET部分(也可以是HEADor POST,存在其他方法但不会影响您在浏览器的 URL 地址栏中看到的内容),然后是请求的 URI ( /[^\ \?]*),然后是杂散的? , 然后($|\ )匹配请求的结尾(因为请求可以在没有HTTP/1.1位的情况下结束)或空格。

于 2012-11-05T05:06:05.767 回答