Трассировка показывает, что именно сопоставление маршрутов вызвало перенаправление; обычно (например, если вы не добавили явные маршруты перенаправления), это означает, что клиент попытался получить доступ к URL-адресу branch (тот, который заканчивается конечной косой чертой ), но запрошенный URL-адрес не включал последнюю косую черту. Клиент просто перенаправляется на URL-адрес канонической ветви с косой чертой.
Из документации Werkzeug Rule
:
Правила URL, которые заканчиваются косой чертой, - это URL-адреса ветвей, другие - листья. Если вы включили
blockquote>strict_slashes
(по умолчанию), все дочерние URL-адреса, которые сопоставляются без конечной косой черты, будут перенаправлять на тот же URL-адрес с отсутствующим косой чертой.From документация маршрутизации :
Правила URL флака основаны на модуле маршрутизации Werkzeug. Идея этого модуля заключается в том, чтобы обеспечить красивые и уникальные URL-адреса на основе прецедентов, установленных Apache и более ранними HTTP-серверами.
Возьмите эти два правила:
@app.route('/projects/') def projects(): return 'The project page' @app.route('/about') def about(): return 'The about page'
аналогичные, они отличаются использованием конечной косой черты в определении URL. В первом случае канонический URL-адрес для конечной точки проекта имеет завершающую косую черту. В этом смысле он похож на папку в файловой системе. Доступ к нему без завершающей косой черты приведет к перенаправлению Flask к каноническому URL-адресу с завершающим косой чертой.
Во втором случае URL-адрес определен без конечной косой черты, а скорее как путь к файлу на UNIX-подобных системах. Доступ к URL-адресу с завершающей косой чертой приведет к ошибке 404 «Not Found».
Это поведение позволяет относительным URL-адресам продолжать работать, даже если завершающая косая черта оммитирована, в соответствии с тем, как работают Apache и другие серверы.
blockquote>Как указано, если вы не хотите этого поведения (и имеете url без конечной косой черты вместо 404 Not Found), вы должны установить опцию
strict_slashes=False
на вашем маршруте.