.htaccess htaccess如何删除尾随问号
我如何使用htaccess去除尾随?从…起 ? 所以它显示如下:.htaccess htaccess如何删除尾随问号,.htaccess,.htaccess,我如何使用htaccess去除尾随?从…起 ? 所以它显示如下: 不幸的是,无法通过重写规则中的URI匹配检测错误的尾随斜杠(查询字符串被显式删除),您也无法对照%{query\u string}变量进行检查,因为在这两种情况下,无论是否有尾随?,变量都将为空。您需要做的是通过%{the_request}变量,使用实际请求匹配尾部斜杠: RewriteEngine On RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /[^\ \?]*\?($|\ )
不幸的是,无法通过
重写规则
中的URI匹配检测错误的尾随斜杠(查询字符串被显式删除),您也无法对照%{query\u string}
变量进行检查,因为在这两种情况下,无论是否有尾随?,变量都将为空。您需要做的是通过%{the_request}
变量,使用实际请求匹配尾部斜杠:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /[^\ \?]*\?($|\ )
RewriteRule ^(.*)$ /$1? [L,R=301]
这将删除URL后面的零散的?。上面的正则表达式与一个请求相匹配,它们将如下所示:
GET /directory/folder/? HTTP/1.1
因此,正则表达式尝试匹配GET
部分(也可以是HEAD
或POST
,存在其他方法,但不会影响您在浏览器URL地址栏中看到的内容),然后是请求的URI(/[^\\?]*
),然后是零散的?,然后是($\\)
匹配请求的结尾(因为请求可以在没有HTTP/1.1位的情况下结束)或空格