Я создал файл контроллера, который обрабатывает перенаправление пользователей на правильный URL, я хочу направить определенный трафик на этот контроллер и не влиять на остальные.http://website.com/shows.php?id=review-1
является примером URL-адреса, который я хочу отправить контроллеру.
На данный момент я придумал следующее RewriteRule
, которое вызывает общесайтовый сервер 500 Ошибка сервера.
RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\?
RewriteCond %{QUERY_STRING} (?:^|&)id=review-[0-9]+(?:&|$) [NC]
RewriteRule ^ /controller.php [QSA,L]
Удаление -[0-9]+
из условия %{QUERY_STRING}
избавляет от 500-серверной ошибки всего сайта, но не работает.Следующее RewriteRule
, которое я пытаюсь заменить, прекрасно работает.
RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\?
RewriteCond %{QUERY_STRING} (?:^|&)id=review-1(?:&|$) [NC]
RewriteRule ^ /review/1/super-baseball-2020/? [R=301,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/([0-9]+)/([a-z0-9-]+)?/?$ /shows.php?id=$1-$2 [QSA,L,NC]
Конечным результатом является то, что пользователь, который переходит на http://www.website.com/shows.php?id=review-1
, в конечном итоге получит http://www.website.com/controller.php?id=review-1
, который будет заниматься обработкойперенаправление 301.