Я использую Iron для обслуживания сайта React. Я пытаюсь заставить его обслуживать index.html, если файл или каталог не существует.
fn staticHandler(req: &mut Request) -> IronResult<Response> {
let url = Url::parse("http://localhost:1393").unwrap();
let getFile_result = Static::handle(&Static::new(Path::new("../html")), req);
match getFile_result {
Ok(_) => getFile_result,
Err(err) => {
Static::handle(
// returns 404 error - ../html/index.html returns 500
&Static::new(Path::new("localhost:1393/index.html")),
req,
)
}
}
}
Если я перейду на localhost: 1393, я получу свою индексную страницу, если я перейду на localhost: 1393 / not-a-directory, я просто получу сообщение об ошибке.
Есть ли способ перенаправить (без изменения URL-адреса) или какое-то другое решение?
Это не дубликат Как изменить поведение 404 по умолчанию в Iron? потому что я пытаюсь обработать, когда статический актив, который запрашивает пользователь, не существует, а не когда маршрут не определен.
Static::new
в этом вопросе, но OP не предоставил минимальный воспроизводимый пример, поэтому кто знает... - person Shepmaster   schedule 28.09.2017