htaccess URL не найден
У меня есть файл .htaccess и код в нем:
#command_players
RewriteRule ^command_players/([0-9]+)?$ command_players.php?id=$1 [NC,L]
Моя страница входа в систему должна перенаправляться на страницу command_players.php, если введенные пользователем данные верны:
if (password_verify($_POST['pass'], $results['pass'])) {
$_SESSION['command']= 'ok';
$_SESSION['id'] = $results['id'];
redirect("command_players/$results[id]/");
}
Но я получаю ошибку вроде:
Запрашиваемый URL /site/command_players/18/ не найден на этом сервере,
когда /site/command_players.php
работает.
Я не хорош в htaccess, что я делаю не так?
2 ответа
Проблема была о папке, и я пропускаю '/' при перенаправлении входа в систему. Теперь это работает:
#command_players
RewriteRule ^command_players/([0-9]+)/?$ site/command_players.php?id=$1 [NC,L]
if (password_verify($_POST['pass'], $results['pass'])) {
$_SESSION['command']= 'ok';
$_SESSION['id'] = $results['id'];
//redirect("command/list.php/$results[id]/");
redirect("/command_players/{$results['id']}/");
}
Вы должны включить косую черту (/
) в вашем регулярном выражении в файле htaccess, как показано ниже.
?
означает "ноль или один из предыдущих", так /?
означает "без косых черт или один", что соответствует шаблону, который вы описали.
#command_players
RewriteRule ^command_players/([0-9]+)/?$ command_players.php?id=$1 [NC,L]
Полезные ресурсы
- https://www.rexegg.com/regex-quickstart.html часто используемые правила / советы
- https://regexr.com/ инструмент для проверки регулярных выражений