我想创建htaccess规则来转换此网址: 的 www.foo.com/?val=hello 至: 的 www.foo.com/hello
我创建了新规则,但它无效。
RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?s=$1 [QSA]
任何想法如何做到这一点?谢谢!
答案 0 :(得分:0)
我在我的Apache上做了这个:
在我的httpd.conf中,在相应的VirtualHost中,我添加了这个:
RewriteEngine on
RewriteCond %{QUERY_STRING} "val=(.+)"
RewriteRule "(.*)" "%1?" [L,R=302]
如果我要求http://localhost/?var=hello.phtml,我会被重定向到http://localhost/hello.phtml。
详细说明:
LoadModule rewrite_module modules/mod_rewrite.so
)?
之后收到的所有内容。我将其与val=(.+)
相匹配。 .
匹配任何内容,+
表示“前面的一个或多个”。前面的这里是.
,因此任何字符组合都是有效的。它放在括号中,因为我稍后需要匹配的组。"(.*)"
匹配http://localhost/
之后的任何内容。它由%1
替换,其中包含上面RewriteCond括号中的内容。然后我添加了?
以确保没有添加查询字符串。关于?
的注释。默认情况下,如果您从.../somepage.html?var1=value1
重写为.../somepage2.html
,则重写引擎会在其末尾自动添加?var1=value1
。要在不保留查询字符串的情况下重写,请在末尾添加一个?
。