【发布时间】:2012-08-08 22:29:18
【问题描述】:
如何使用查询字符串从 URL 中删除 ? 符号
【问题讨论】:
-
谷歌搜索 mod_rewrite
标签: .htaccess query-string ssi
如何使用查询字符串从 URL 中删除 ? 符号
【问题讨论】:
标签: .htaccess query-string ssi
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},第二个单词是 unaltered 的 URI请求。这是经过重写引擎的,但在对其进行任何路径处理之前。最后一位是协议版本,有些可选,决定之后是否会有标头。
【讨论】:
?
(.*) 应该是 (.+)
RewriteCond %{REQUEST_FILENAME} !-f 和RewriteCond %{REQUEST_FILENAME} !-d。