我有一系列命令检查 url 是否看起来像
http://localhost/questions/32/new-question-from-peter
如果最后一部分丢失,我会重定向到这个。我确实允许最后一个片段。
但是,我想为它添加一个可能性
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);
}
}
目前它工作正常,并将始终重定向到正确的路径。但它不会让我追加
?page=<int>.
所以我认为模式应该是
$pattern = '/^\/questions\/[0-9]+\/'.$dashed.'((\/#[0-9]+)|(?[\w\d&=]+))?$/i';
但这会导致重定向循环,我无法弄清楚原因。你能帮我吗?