2017-12-07 4 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 자리를 일치 시키려면 + 수량 기호를 추가해야합니다. 숫자를 캡처하여 대체 URL로 복사 할 수 있도록하려면 캡쳐 그룹이 필요합니다.

또한 정규식에서 특별한 의미를 갖는 특정 문자 인 .?을 이스케이프 처리해야합니다.

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);