2013-11-14 1 views
2

example.com/static/에서 정적 파일을 제공하고 있습니다.URL 패턴이 그것을 흡수 할 때`/ static`을 무시하십시오

url(r'^', include('ecore.urls', namespace="ecore")),

ecore.urls :

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^tags/(?P<tag_slug>[\w-]*)', views.tag_view, name='tag_view'), 
    url(r'^about/', views.about_view, name='about'), 
    url(r'^contact/', views.contact_view, name='contact'), 
) 
또한 루트에 몇 가지를 포함하기 위해 모든 것을 흡수 ( example.com에서 지적) 내 루트 URL의 conf에 다음 URL 패턴을 사용하고 있습니다

내 모든 정적 파일이 404을 반환하므로 문제가됩니다.

example.com/dev/을 사용하면서 개발 과정에서 문제가되지 않았으므로 패턴이 모든 것을 씹지 않았습니다.

URL 패턴에 대해 부정적인 선행 기입 ((?!static/))을 구문 분석 할 수 없습니다. 어떤 종류의 무시 패턴이 있습니까?


정적 파일은 www/static/에있는 파일을 넣고 Options -Indexes 그래서 사람들이 탐구하지 않는 아파치 collecstatic를 사용하여 제공됩니다.

사이트는 기본적으로 www/ 인 루트를 가리 키도록 설정됩니다.

+0

"정적 /"규칙을 다른 규칙 아래에 배치하십시오. – Joucks

+0

@ 주크 스 "static /"패턴이 없습니다. 그들은 아파치가 아니라 장고가 제공되기 때문에 그것은 무엇입니까? – MLM

+0

오케이 죄송합니다. 지금 받으러 왔습니다. 그래서'example.com/static /'URL에 django를 사용하지 않도록 웹 서버를 구성하십시오. – Joucks

답변

1

정적 파일에 대한 요청이 404 프로덕션에서 반환되면 Apache가 잘못 구성됩니다. HTTP 서버는 장고 응용 프로그램을 전혀 사용하지 않고 /static/에 대한 요청을 처리해야합니다. Apache 설정 예는 in the Django documentatio입니다.

앞에 Alias /static이 있는지 확인하십시오.

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = patterns(…) 

if settings.DEBUG: 
    urlpatterns = static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + urlpatterns 

(참조 : https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-during-development를)

장고의 어떤 종류가없는 정적 파일에 대한 요청이 개발에 404를 반환하는 경우

, 당신은 명시 적으로 staticfiles 핸들러를 추가 할 수 있습니다 "이 URL 패턴 무시"기능. URL 패턴을 무시한다는 것은 무엇을 의미합니까? Django가 요청을 처리 할 때까지 HTTP 서버는 응답을 기대하고 있으며 장고가 Apache에게 "실제로이 요청을 처리하고 싶지는 않습니다. ".

+0

프로덕션으로 이동 중이므로'DEBUG = False'입니다. 'static()'은 내가 이미 그 문제에 대한 해결책을 가지고있을 때 static을 제공하는 것으로 보인다. 이 예제는 기본적으로'www/static /'에 있기 때문에 어딘가에'/ static'라는 별명을 지정할 필요가 없다는 것을 제외하고는 제 설정입니다. django를'/ static /'에 사용하지 않고 아파치가 장고에 가지 않도록 어떻게 설정합니까? – MLM

+2

아, 그게 네 문제 야. :) 명시 적으로 별칭이 필요하다. 그렇지 않으면 아파치는 (WSGIScriptAlias ​​/'때문에) 장고에 대한 모든 요청을 전달할 것이다. –

+0

별칭 :'Alias ​​/ static/var/www/static /'을 추가 한 것만으로 효과적입니다! 당신의 대답을 업데이트하십시오. – MLM

관련 문제