我有一個項目,在我自己的開發計算機(使用mod_wsgi爲項目提供服務)沒有問題。在活動服務器(使用mod_fastcgi)它生成500雖然。django內部重定向
我的網址的conf是這樣的:
# -*- 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,並且一個運行得很好,具有更復雜的URL和視圖
個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")
艾倫
編輯:我增加最大重定向並得到了不同類型的錯誤:星期三06月09日十五時11分46秒2010] [錯誤] [客戶端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.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/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/apache/domains /www.domain.com/htdocs/cgi-bin/fifa2010.fcgi/jalka/失敗
它看起來像不斷重新回到自己,但至於爲什麼 - 我不知道。
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]
謝謝!你想出了我發現自己的幾乎精確的描述 - 我順便解決了它。我不知道爲什麼,但是.fcgi文件的這兩個重寫似乎工作方式不同,因爲其中一個是針對子域的,其中域本質上是domain.com的域別名。當我試圖設置它完全像爲domain.com的子域時,它通過添加子域(jalka)作爲請求路徑的一部分工作不同。在弄清楚這一點的過程中,我得到像domain.com/cgi-bin/fifa2010.fcgi/jalka/-這些生成的django錯誤的路徑,但至少我知道我正在獲取clos – 2010-06-09 16:56:18