Я пытаюсь создать приложение Angular с Flask для загрузки страницы входа в приложение Angular.Использование только https://domainname/
работает нормально, но я не могу перенаправить на https://domainname/login
.
Шаги для воспроизведения:
- Очистить кеш браузера
- Открыть новую вкладку и перейти к
https://domainname/login
- Возвращает 404
Первоначально я использовал другое решение, но, пытаясь все по ходу дела, я закончил с подходом, предложенным в вопросе переполнения стека Python (Flask), обслуживающий файл index.html проекта Angular
Маршруты Flask
@app.route('/<path:path>', methods=['GET'])
def static_proxy(path):
return send_from_directory('./dist/', path)
@app.route('/')
def root():
return send_from_directory('./dist/', 'index.html')
Производственная сборка из приложения Angular идет прямо в папку dist
.Запрос https://domainname/
попадает на первый маршрут, и фактически я не вижу, как работает второй маршрут.Поэтому, когда я набираю https://domainname/login
, он попадает на первый маршрут и, конечно, возвращает 404
, потому что в папке 'dist' нет файла с именем входа.Итак, вопрос в том, как проложить путь к таким путям:
https://domainname/login
https://domainname/contacts
https://domainname/contacts/map
Другая конфигурация, которую я пробовал, и она имеет такое же поведение, использует Blueprint
.Я не понимаю, почему, все еще не работает с путем /login
, потому что в этой версии должен возвращать файл index.html, и он должен работать на стороне клиента, правильно?(здесь угловое приложение построено для статического / дистального)
main.py
from app.api_default import api as default_blueprint
app.register_blueprint(default_blueprint)
...
app/api_default/__init__.py
STATIC_FOLDER = os.path.join(os.pardir, 'static/dist')
api = Blueprint('default', __name__, static_folder=STATIC_FOLDER, static_url_path='')
from . import routes
...
app/api_default/routes.py
@api.route('/', defaults={'path': ''})
@api.route('/<path:path>')
def route_path(path):
return api.send_static_file('index.html')
@api.route('/')
def home_paths():
return api.send_static_file('index.html')