3

我在提供我的静态文件example.com/static/。我还在根 url conf(指向example.com)中使用了以下 url 模式,它吸收了所有内容,以便在根目录中包含一些内容:

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'),
)

这是一个问题,因为我所有的静态文件都返回一个404.

在我使用的开发过程中,这不是问题,example.com/dev/因此该模式并没有解决所有问题。

(?!static/)不能为 url 模式解析负前瞻 ( )。是否有某种忽略模式?


静态文件是通过使用collecstatic将文件放入www/static/然后 apache来提供的,Options -Indexes因此人们不会去探索。

该站点设置为指向根,基本上是www/.

4

1 回答 1

1

/static/如果对静态文件的请求在生产中返回 404,那么您的 Apache 配置不正确:您的 HTTP 服务器应该在不涉及您的 Django 应用程序的情况下处理请求。Django 文档中有一个示例 Apache 配置。

确保.Alias /static之前在您的配置中WSGIScriptAlias /

如果对静态文件的请求在开发中返回 404,那么您可以显式添加 staticfiles 处理程序:

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 )

Django 没有任何类型的“忽略此 URL 模式”功能。毕竟,忽略 URL 模式意味着什么?当 Django 处理请求时,HTTP 服务器正在等待响应,并且 Django 没有标准(甚至是特定于 Apache)的方式来告诉 Apache“实际上我不想处理这个请求,把它传递”。

于 2013-11-14T18:44:56.777 回答