如果一个查询参数匹配,则htaccess重定向

时间:2016-07-23 21:56:11

标签: apache .htaccess redirect

我尝试从/somedir/index.php?action=something&id=x重定向到/index.php?action=something&id=x

仅当action = something时。 id是动态的。

最近我试过这个没有运气。这有什么问题?

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (^|&)action=something($|&)
RewriteCond %{QUERY_STRING} (^|&)id=($|&)
RewriteRule ^somedir/index\.php$ /index.php?action?something&id=%2$ [NC,R]
</IfModule>

注意:somedir在其htaccess中有一个index.php和这个规则。这会导致冲突吗?

RewriteRule ^.*$ index.php [NC,L]

2 个答案:

答案 0 :(得分:0)

在.htaccess

中尝试使用此规则而不是您的规则
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (^|&)action=something($|&)
RewriteCond %{QUERY_STRING} (^|&)id=x($|&)
RewriteRule ^somedir/index\.php$ /index.php?action=something&id=x [L,R=301]
</IfModule>

结果不会发生冲突。

答案 1 :(得分:0)

您可以使用:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (?:^|&)(action|id)=([^&]+)&(?:.*&)?(action|id)=([^&]+)(?:$|&) [NC]
RewriteRule ^somedir/index\.php$ /index.php?%1=%2&%3=%4 [NC,L,R=301]
</IfModule>