htaccess只删除'?'从带有查询字符串的URL签名

时间:2012-08-08 22:29:19

标签: .htaccess query-string ssi

如何使用查询字符串

从URL中删除?符号

1 个答案:

答案 0 :(得分:3)

RewriteEngine On

# This is to physically change what's in the browser's address bar using a client redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?([^\ ]+)
RewriteRule ^$ /%1? [R=301,L]

# This is to internally rewrite on the server side
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?(.+)$ /?$1 [L]

  

另外,请你能解释一下[A-Z]{3,9}\ and ([^\ ]+)本身意味着什么吗?在哪里可以阅读有关构建此类结构的内容?

该正则表达式用于匹配 HTTP请求,第一行看起来像这样:

GET /path/to/file HTTP/1.1

第一个单词是 METHOD ,可以是3到9个字符之间的任意长度(因此是{3,9},第二个单词是未更改的 URI请求。这是通过重写引擎,但在对它进行任何路径处理之前。最后一位是协议版本,并且在某种程度上是可选的,并确定之后是否会有标题。