2012-08-08 127 views

回答

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 

的第一个字是方法,它可以在任何地方长度在3到9个字符之间(因此{3,9},第二个字是未改变请求的URI。这是通过重写引擎,但在任何路径处理完成之前,最后一位是协议版本和是有些可选的,并确定是否会有后来的标题。

+0

不工作。我申请字符串后出现内部服务器错误:RewriteRule^/?$ /%1 [L] – slfkjsdlfkj 2012-08-09 12:17:38

+1

@ user1586029对不起,我忘了规则目标末尾的'?' – 2012-08-09 12:19:48

+0

嗯,我非常感谢你为我付出的努力。但看起来效果还不是很好。如果我在浏览器地址字段中键入http://mysite.com?page,我将获得Chrome,Firefox和IE http://mysite.com/?page,因此相同的问题标记仍然存在。歌剧给了我http://mysite.compage/,Safari提供了http://test.metal.by/page/我无法得到什么问题。 – slfkjsdlfkj 2012-08-09 14:17:58