正则表达式和重写规则

REGEX and RewriteRule

我希望能深入了解如何最好地设置大量 URL 重定向。 因为 URLs 使用动态 id,常规重定向永久似乎对我们不起作用。 所以我尝试了一个重写规则,它似乎有效。

我们希望像这样清理一些字符串:

/myolddirectory/olddir/oldfile.php?id=2 should redirect to: /mynewdirectory?id=2
/myolddirectory/olddir/oldfile.php?id=4 should redirect to: /mynewdirectory?id=4

这个有效:

RewriteCond %{QUERY_STRING} (^|&)id\=2($|&)
RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=2 [L,R]
RewriteCond %{QUERY_STRING} (^|&)id\=4($|&)
RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=4 [L,R]

我们有大约 600 个 ID。 我只是想知道是否有更简洁的方法来做到这一点 w/o 必须编写 600 多条规则。谢谢。

您可以使用一个条件来完成:

RewriteCond %{QUERY_STRING} \bid=([24])\b
RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=%1 [L,R]

%1指第一个捕获组在重写条件下持有的值。