gpt4 book ai didi

apache - 如何在根 url(/- 无路径)中运行 FastCGI 脚本?

转载 作者:行者123 更新时间:2023-12-01 11:27:03 26 4
gpt4 key购买 nike

我在 Python/Flask 中创建了一个简单的应用程序,它有一个主页 url (www.site.com/)。我已经获得了一个 HostGator 共享帐户 来托管它,所以我只能访问 .htaccess,但没有其他 Apache 配置文件。

我设置了一个 FastCGI 脚本来运行应用程序(在 these instructions 之后),但它们要求 URL 具有 /index.fcgi 或任何其他路径。 我可以让根路径 (/) 直接由 FastCGI 脚本提供吗?另外,像 /static//favicon.ico 这样的文件夹应该由 Apache 提供服务。

我现在拥有的 .htaccess 是:

AddHandler fcgid-script .fcgi
DirectoryIndex index.fcgi

RewriteEngine On
RewriteBase /
RewriteRule ^index.fcgi$ - [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.fcgi/$1 [R=302,L]

我不确定,但我认为 Apache 版本是 2.2。

最佳答案

仅供引用:您可以使用

检查 apache 版本
apachectl -V  # or /<pathwhereapachelives>/apachectl -V

对于 fastCGI 设置,查看此链接是否有帮助。 http://redconservatory.com/blog/getting-django-up-and-running-with-hostgator-part-2-enable-fastcgi/

基本上,如果你想在 / 中运行脚本,你可以使用 mod_rewrite 直接提供静态文件(如下例中的 /media),并且每个WSGI 脚本提供的其他路径:

AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On

RewriteRule (media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]

请注意,当您使用 Flask 时,您必须覆盖 SCRIPT_NAME 请求变量(如 here 所述),否则 url_for() 的结果将是一个以 /index.fcgi/... 开头的字符串:

#!/usr/bin/python
#: optional path to your local python site-packages folder
import sys
sys.path.insert(0, '<your_local_path>/lib/python2.6/site-packages')

from flup.server.fcgi import WSGIServer
from yourapplication 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()

关于apache - 如何在根 url(/- 无路径)中运行 FastCGI 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com