フラスコのテンプレート ファイルに、次のような css ファイルを含めます (ボイラープレートは省略しました)。
url_for('static', filename='css/bootstrap.css')
これは、(先頭のスラッシュのために)どの手段にレンダリングさ/static/css/bootstrap.css
れ、 として解釈されdomain.com/static/css/boostrap.css
ます。残念ながら、実際のstatic
フォルダーはサブディレクトリにあります。domain.com/projects/test/static/
環境仕様:
フォルダーにある私のfcgiファイル~/fcgi-bin
(ホスト固有だと思います):
$ cat ~/fcgi-bin/test.fcgi
#!/usr/bin/env python2.7
import sys
sys.path.insert(0, "/home/abcc/html/projects/test")
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()
私の .htaccess は domain.com/projects/test/ にあります
$ cat .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
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /fcgi-bin/test.fcgi/$1 [QSA,L]
</IfModule>
要約すると、代わりにurl_for('static', filename='css/bootstrap.css')
戻りたいstatic/css/bootstrap.css
/static/css/bootstrap.css
編集#1
これは、url_for('about') のような静的ファイルではなく、通常の url_for 呼び出しでも発生することに気付きました。
編集#2
これについては、 quickstart-appとブログ記事を書きました。