REGEX和RewriteRule

时间:2018-10-30 18:50:42

标签: php regex mod-rewrite url-rewriting apache2

我希望对如何最好地设置大量URL重定向有所了解。 由于这些网址使用动态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。 我只是想知道是否有一种更清洁的方法来执行此操作,而不必编写600多个规则。谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用以下一种条件进行操作:

UITableView

RewriteCond %{QUERY_STRING} \bid=([24])\b RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=%1 [L,R] 是指第一个捕获组在重写条件下保留的值。