0
가 나는 URL을내 페이지가 리디렉션 루프를 발생시키는 이유는 무엇입니까?
http://localhost/questions/32/new-question-from-peter
같은 것을보고 마지막 부분이없는 경우 I이로 리디렉션 여부를 확인 일련의 명령을 가지고있다. 나는 끝에 조각을 허용합니다. 그것은 여기
http://localhost/questions/32/new-question-from-peter?page= <int>
내 코드
if($question){
$url = $_SERVER['REQUEST_URI'];
$dashed = $question->dashed_title;
$pattern = '/^\/questions\/[0-9]+\/'.$dashed.'(\/#[0-9]+)?$/i';
if (!preg_match($pattern, $url)){
// redirect_301 is a function that I wrote
redirect_301('http://'.$_SERVER['HTTP_HOST'].'/questions/'.$question->id.'/'.$dashed);
}
}
는 순간입니다 잘 작동하고 항상 올바른 경로로 리디렉션 할 예정위한
그러나, 나는이 사용되고 있습니다 추가하고 싶습니다. 하지만 그래서 내가 패턴이
$pattern = '/^\/questions\/[0-9]+\/'.$dashed.'((\/#[0-9]+)|(?[\w\d&=]+))?$/i';
해야하지만이 리디렉션 순환의 결과로하고 내가 왜 해결하지 못할 것으로 생각 날
?page=<int>.
를 추가하지 않습니다. 도울 수 있니?
주셔서 감사합니다.하지만 그 제목 뒤에 일반 문자가 허용됩니다. 어떻게 그럴 수 있습니까? 가 허용됩니다 – yehuda
원래 정규 표현식에서'$'를'(\.. *)? $'로 대체하십시오 (이스케이프 된 "?" – d11wtq
BTW에 유의하십시오.) URL의 해시 구성 요소는 웹 서버에 표시되지 않습니다. .. 클라이언트 쪽 구성 요소입니다. – d11wtq