301重定向的正则表达式

Regular expressions for 301 redirect

如何使用正则表达式将 http://example.com/news.php?id=268&page=25http://example.com/news.php?id=X&page=Y 等所有页面重定向到另一个页面?

我尝试使用 http://example.com/news.php?id=/d&page=/d

数字与 \d 匹配,而不是 /d。要匹配至少 1 个数字,您需要添加 + 量词。要捕获数字以便将它们复制到替换项 URL,您需要在其周围设置一个捕获组。

您还需要转义某些在正则表达式中具有特殊含义的字符:.?.

http://example\.com/news\.php\?id=(\d+)&page=(\d+)
$string = 'http://example.com/news.php?id=268&page=25';
$pattern = '/^[^\?]+\?id=(\d+)&page=(\d+)$/';
$replacement = 'https://mynewdomain/with/too/many/subpaths/page.php?id=&page=';
echo preg_replace($pattern, $replacement, $string);