我们有一个基于 python/django 构建的应用程序。每当链接缺失 (404) 或服务器错误 (500) 时我都会收到电子邮件。我注意到我收到了一些看起来像这样的链接:
Referrer: http://www.mywebsite.com/model/
Requested URL: /model/js/modernizr-1.7.min.cb14102011.js
User agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB7.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
IP address: 41.2.246.84
问题是请求的 URL。它请求相对于当前目录的js文件,而不是绝对目录。奇怪的是我无法重现它,而且这种情况每天都会发生几次,即使该网站上有很多不同的用户。缺少链接的结果有时还会导致 500 个错误,具体取决于 url(由于我为应用程序定义的 django url 结构)。
以前有人遇到过这种问题吗?我应该检查哪些内容可以解决此问题?
编辑: js文件通过http://www.mywebsite.com/static/js/访问相同的配置适用于 css 文件。经过进一步调查,似乎“静态”部分已从 url 中删除。
编辑 (2) 我昨天犯了一个错误。 {{ STATIC_URL }} 不仅不会按照设置文件中的定义进行提取,而且会被替换为当前(相对)url。即,在原来的帖子中“模型”应该是“静态”,但它没有被替换。我仍然不明白为什么会发生这种情况。
最佳答案
谢谢丹尼斯和乔丹。您的评论对我帮助很大。
对于我的场景,我注意到问题仅发生在 1 个网址上。由于许多模板使用相同的基本模板。我排除了基本模板问题。我还检查了 url 的 View ,以查看上下文是否已正确添加(因为没有上下文,STATIC_URL 变量可能无法通过)。一切都好。
我在日志中也只看到了IE7。当我查看模板时,我注意到一个额外的结束符“(即class =“bogus””)。我认为额外的引用弄乱了模板,然后 IE7 就无法渲染模板的其余部分。
我已经在生产中进行了更改,因此我不能 100% 确定我已经解决了问题,但我会在一天左右的时间内知道。
编辑: 我意识到,答案在于,如果存在编码问题(即服务器抛出 500),则上下文无法正确加载,因此 STATIC_URL 不会被填充。这也意味着对于从 STATIC_URL 加载的任何文件,每个 500 错误都会有一个相应的 404 错误
关于django - 偶尔出现错误的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798438/