2014-01-09 60 views
1

我有这样一个URL:mod_rewrite的:改变单一的查询字符串参数

http://foo.bar/index.php?page=this-is-the-page

现在,我必须找到这样与mod_rewrite的拼写错误的网址:unfortunally

http://foo.bar/index.php?page=this--is-the-page

所以远远我无法找到正确的RewriteRule

Options -MultiViews 
RewriteEngine On 

RewriteCond %{QUERY_STRING} ^page=(\w+)--((\w+)(-(\w+))*)$ 
RewriteRule ^index\.php$ /index.php?page=%1-%2 

问题似乎是“?”这应该意味着QSD。 无论如何,这是建议这样的文章,例如mod_rewrite to change query string parameter name

那么,我怎样才能重新组织查询字符串值与mod_rewrite只? SEO友好和黑客的PHP代码是不是在这里一个问题

回答

0

试试这个规则:

RewriteCond %{QUERY_STRING} ^page=(.*?)--([^&]*) 
RewriteRule ^index\.php$ /index.php?page=%1-%2 [L,R] 
+0

它的工作原理!非常感谢你。不幸的是,我不明白它为什么有效,主要的区别是什么。我认为这是L参数?你能解释一下吗? – butterflyx

+0

问题是在你的正则表达式中使用\ w +和。+。你可以在一些在线正则表达式测试中试试你的正则表达式来验证这个 – anubhava

+0

很高兴知道它已经解决了。 – anubhava