0

我有以下.htaccess文件-

AddHandler fcgid-script .fcgi
DirectoryIndex index.fcgi

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.fcgi$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.fcgi/$1 [L]
</IfModule>

和以下index.fcgi文件:

#!/home/username/mydjango/bin/python
    import os
    import sys

    from flup.server.fcgi import WSGIServer
    from django.core.wsgi import get_wsgi_application

    sys.path.insert(0, "/home/username/mydjango")
    os.environ['DJANGO_SETTINGS_MODULE'] = "testproject.settings"

    WSGIServer(get_wsgi_application()).run()

Django 应用程序成功运行,但在 URL 中插入了“index.fcgi”,如下所示 -

www.example.com/index.fcgi/admin 而不是 www.example.com/admin

如何从 URL 中删除脚本名称?

我尝试按照此处的说明进行操作 - http://flask.pocoo.org/docs/0.10/deploying/fastcgi/

但它适用于烧瓶,我无法让它为 Django 运行。

PS - 我在一个共享主机计划中,没有服务器的 root 访问权限。

4

1 回答 1

1

我刚刚在我的 .htaccess 文件中添加了这个。从 URL 中隐藏 index.fcgi 就足够了。

<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 ^(.*)$ index.fcgi/$1 [QSA,L]
</IfModule>
于 2017-01-11T19:42:29.147 回答