我有一个项目,在我自己的开发计算机中(使用mod_wsgi来服务项目)没有引起任何问题。在实时服务器(使用mod_fastcgi)中,它生成500。
我的网址是这样的:
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('jalka.game.urls')),
)
和
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
from django.contrib.auth import views as auth_views
urlpatterns = patterns('jalka.game.views',
url(r'^$',
view = 'front',
name = 'front',),
url(r'^ennusta/(?P<game_id>\d+)/$',
view = 'ennusta',
name = 'ennusta',),
url(r'^login/$',
auth_views.login,
{'template_name': 'game/login.html'},
name='auth_login'),
url(r'^logout/$',
auth_views.logout,
{'template_name': 'game/logout.html'},
name='auth_logout'),
url(r'^arvuta/$',
view = 'arvuta',
name = 'arvuta',),
)
和.htaccess就是这样:
Options +FollowSymLinks
RewriteEngine on
RewriteOptions MaxRedirects=10
# RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteRule (.*) http://domain.com/$1 [R=301,L]
AddHandler fastcgi-script .fcgi
RewriteCond %{HTTP_HOST} ^jalka\.domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) cgi-bin/fifa2010.fcgi/$1 [QSA,L]
RewriteCond %{HTTP_HOST} ^subdomain\.otherdomain\.eu$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) cgi-bin/django.fcgi/$1 [QSA,L]
请注意,我还有其他项目使用相同的.htaccess设置,并且运行得很好,网址和视图更复杂
fifa2010.fcgi:
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import sys, os
DOMAIN = "domain.com"
APPNAME = "jalka"
PREFIX = "/www/apache/domains/www.%s" % (DOMAIN,)
# Add a custom Python path.
sys.path.insert(0, os.path.join(PREFIX, "htdocs/django/Django-1.2.1"))
sys.path.insert(0, os.path.join(PREFIX, "htdocs"))
sys.path.insert(0, os.path.join(PREFIX, "htdocs/jalka"))
# Switch to the directory of your project. (Optional.)
os.chdir(os.path.join(PREFIX, "htdocs", APPNAME))
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % (APPNAME,)
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
艾伦
编辑:我增加了最大重定向并出现了不同类型的错误:[2010年6月9日星期三15:11:46] [错误] [客户端84.50.104.242](63)文件名太长:访问/ www / apache /domains/www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apache/domains/www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apache/domains /www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apache/domains/www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apache/domains/www .domain.com / htdocs中/的cgi-bin / fifa2010.fcgi / jalka /网络/阿帕奇/域/ www.domain.com / htdocs中/的cgi-bin / fifa2010.fcgi / jalka /网络/阿帕奇/域/ www.domain的.com / htdocs中/的cgi-bin / fifa2010.fcgi / jalka /网络/阿帕奇/域/ www.domain.com / htdocs中/的cgi-bin / fifa2010.fcgi / jalka /网络/阿帕奇/域/ www.domain.com /htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apache/domains/www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apache/domains/www.domain.com/htdocs /cgi-bin/fifa2010.fcgi/jalka/www/apache/domains/www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/www/apach E /域/ www.domain.com / htdocs中/的cgi-bin / fifa2010.fcgi / jalka /网络/阿帕奇/域/ www.domain.com / htdocs中/的cgi-bin / fifa2010.fcgi / jalka /网络/阿帕奇/ domains / www.domain.com / htdocs / cgi-bin / fifa2010.fcgi / jalka / failed看起来它一直重定向回自身,但至于为什么 - 我不知道。
Edit2-解决了! 最后,当我将.htaccess更改为此时,它开始工作:
RewriteCond %{HTTP_HOST} ^jalka\.domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /cgi-bin/fifa2010.fcgi [QSA,L]
RewriteCond %{HTTP_HOST} ^subdomain\.otherdomain\.eu$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) cgi-bin/django.fcgi/$1 [QSA,L]
答案 0 :(得分:1)
这似乎是你的问题:
RewriteCond %{HTTP_HOST} ^jalka\.domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) cgi-bin/fifa2010.fcgi/$1 [QSA,L]
让我们以http://jalka.domain.com/jalka.html
为例请求如果jalka.html不存在,您的代码会将您重定向到http://jalka.domain.com/cgi-bin/fifa2010.fcgi/jalka.html
。当Apache查找/cgi-bin/fifa2010.fcgi/jalka.html
时,它将找不到它,因为fifa2010.fcgi
是一个文件,而不是一个目录。因此,您将被重定向到http://jalka.domain.com/cgi-bin/fifa2010.fcgi/cgi-bin/fifa2010.fcgi/jalka.html
。然而,无法找到此文件。
这就是你最终导致文件名太长的错误,因为这种重定向反复发生。