2017-12-07 15 views
0

http://example.com/news.php?id=268&page=25http://example.com/news.php?id=X&page=Yのようなすべてのページを正規表現を使用して別のページにリダイレクトするにはどうすればよいですか?301リダイレクトの正規表現

http://example.com/news.php?id=/d&page=/dを使ってみました。

+0

は、それはあなただけ(\ D +) ''番号に使う単純なパターンのように見えます。どうしたの? – Barmar

+1

StackOverflowは[あなた自身の問題を最初に解決しようとする](http://meta.stackoverflow.com/questions/261592)と、[宿題に関する質問に答えない](https://softwareengineering.meta。 stackexchange.com/questions/6166)。既に試した内容を[最小限で完全で検証可能な例](http://stackoverflow.com/help/mcve)に表示するために質問を更新してください。詳細については、[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を参照し、[サイトの見学]を受けてください(http://stackoverflow.com/tour ):) – Barmar

+0

申し訳ありません。http://example.com/news.php?id=/d&page=/dに/ dパターンを使用してみましたが、正しい構文がわからないことを忘れてしまいました。 – fredix11

答えて

1

数字は\dと一致し、/dでは一致しません。少なくとも1桁の数字をマッチさせるには、+量子を追加する必要があります。番号をキャプチャして置き換えることができるようにするには、その周りにキャプチャグループが必要です。

また、正規表現で特別な意味を持つ特定の文字:.?をエスケープする必要があります。

http://example\.com/news\.php\?id=(\d+)&page=(\d+) 
0
$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=$1&page=$2'; 
echo preg_replace($pattern, $replacement, $string);