使用.htaccess重写具有可变查询字符串位置的URL

时间:2014-02-10 11:06:25

标签: regex apache .htaccess mod-rewrite redirect

我正在尝试重写几个不同的网址,以便重定向到不同的地方,但它们不是静态网址。

我需要重定向:

/index.php?app=core&section=register

例如:

htttp://www.mysite.com/register.php

但是,我想要做的只是确保/index.php?app=core&section=register /index.php?开头,但可能包含更多参数,并且还要确保它仍然重定向如果他们处于不同的位置,那么基本上只需要匹配它如果 app=core section=register存在于网址中。

最后,如果我想添加第二个,例如..

/index.php?app=core&section=loginhtttp://www.mysite.com/login.php我将如何添加第二个?

1 个答案:

答案 0 :(得分:1)

尝试此规则:

RewriteCond %{QUERY_STRING} (?:^|&)app=core(?:&|$) [NC]
RewriteCond %{QUERY_STRING} (?:^|&)section=(register|login)(?:&|$) [NC]
RewriteRule ^index\.php$ /%1.php? [NC,L,R=302]

根据评论:

RewriteCond %{QUERY_STRING} (?:^|&)app=core(?:&|$) [NC]
RewriteCond %{QUERY_STRING} (?:^|&)section=(somepath)(?:&|$) [NC]
RewriteRule ^index\.php$ /mypath.php? [NC,L,R=302]