我尝试从/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]
答案 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>