我在 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/,因此该模式并没有解决所有问题。
无法为 url 模式解析否定前瞻 ((?!static/))。是否存在某种忽略模式?
通过使用 collecstatic 将文件放在 www/static/ 中,然后使用 apache Options -Indexes 来提供静态文件,因此人们可以这样做不去探索。
站点设置为指向根目录,基本上是 www/。
请您参考如下方法:
如果对静态文件的请求在生产环境中返回 404,那么您的 Apache 配置不正确:您的 HTTP 服务器应该处理对 /static/ 的请求,而根本不会让您的 Django 应用程序参与其中。有一个示例 Apache 配置 in the Django documentatio .
确保 Alias/static 在 WSGIScriptAlias/ 之前在您的配置中。
如果对静态文件的请求在开发中返回 404,那么您可以显式添加静态文件处理程序:
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 “实际上我不想处理这个请求,传递它".
