@89109983838

Flask-admin при редиректах меняет url как исправить?

Доброе время суток.

Проблема заключается в том что при переходе в административную часть (да и просто на редиректах в не административной части) происходит подмена пути. скажем так!
Объяснить слов подобрать не могу, лучше продемонстрирую:

есть сервер у хостера, на нем поднят flask, настройки такие:
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/flask-wrapper.fcgi/$1 [QSA,L]


flask-wrapper.fcgi
#!/home/profel/python/bin/python
# -*- coding: utf-8 -*-
import sys, os
reload(sys)
sys.setdefaultencoding('utf8')

# Add a custom Python path.
sys.path.insert(0, "/home/profel/site/")

# Switch to the directory of your project. (Optional.)
os.chdir("/home/profel/site/")

from flup.server.fcgi import WSGIServer
from app import app

if __name__ == '__main__':
    WSGIServer(app).run()


Все работает замечательно, но к примеру если ввести путь
http_://site.ru/admin/
то после начала загрузки станицы путь меняется на
http_://site.ru/cgi-bin/flask-wrapper.fcgi/admin/

Впрочем это касается и не только Flask-Admin также открывается любой redirect на клиентской части сайта.
http_://site.ru/cgi-bin/flask-wrapper.fcgi/redirect_page/

Вроде бы технических проблем с этим нет - просто не красиво и "неуютно" !

Дополню что на домашнем ПК точная копия сайта работает без этих глюков (Windows + встроенный тестовый сервер Flask).
  • Вопрос задан
  • 2820 просмотров
Решения вопроса 1
@89109983838 Автор вопроса
Ответ нашёл сам!
И заключается он в том что маны читать внимательнее надо!!! :(

но все же укажу и здесь
У меня нет доступа к настройкам Apache поэтому вариант таков:

Если изменить настройки Apache нельзя, например, хостинг не предоставляет такой возможности, то можно воспользоваться промежуточным приложением WSGI для удаления yourapplication.fcgi из URL.
Настройте .htaccess:
<IfModule mod_fcgid.c>
   AddHandler fcgid-script .fcgi
   <Files ~ (\.fcgi)>
       SetHandler fcgid-script
       Options +FollowSymLinks +ExecCGI
   </Files>
</IfModule>

<IfModule mod_rewrite.c>
   Options +FollowSymlinks
   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ cgi-bin/flask-wrapper.fcgi/$1 [QSA,L]
</IfModule>

Теперь настроим flask-wrapper.fcgi:
#!/home/profel/python/bin/python
# -*- coding: utf-8 -*-
import sys, os
reload(sys)
sys.setdefaultencoding('utf8')

sys.path.insert(0, ' /home/profel/site/')

from flup.server.fcgi import WSGIServer
from app import app

class ScriptNameStripper(object):
   def __init__(self, app):
       self.app = app

   def __call__(self, environ, start_response):
       environ['SCRIPT_NAME'] = ''
       return self.app(environ, start_response)

app = ScriptNameStripper(app)

if __name__ == '__main__':
    WSGIServer(app).run()


Кстати укажу на этот отрезок кода
import sys, os
reload(sys)
sys.setdefaultencoding('utf8')

С помощью его я решил проблему с выводом русских букв из файлов *.py (на хостинге и тестовом сервере .. windows).
(по видимому консоль хостера, как и cmd не в UFT8. Для исправления недуга при старте приложения консоль перегружаем c установкой кодировки по умолчанию в UTF8. как то так.... )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы