- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不要马上生气 :P,我正在探索各种选择,我有理由对此进行调查。
我(可以)在文件夹 /scripts/competitions/*.js
中有脚本文件。
现在,脚本文件将由服务器端脚本写入此文件夹中。所以在某些时候,特定的比赛脚本文件可能不可用。因此,尝试加载该脚本文件的网站会得到一个不错的 404。
现在,我可以就此打住,除非您打开 Dev Tools,否则您不会注意到 404,对吗?但是,我宁愿让我的服务器始终为该特定文件夹返回 200,无论文件是否存在。
对于此网址:/scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js
我当前的重写代码可以很好地加载文件,但不会将状态代码更改为 201(只是一个测试)。
ReWriteRule ^/scripts/competitions/([^.]*).js$ /scripts/competitions/$1.js [R=201]
所以我认为正则表达式没有正确捕获。
当我把它改成
ReWriteRule ^scripts/competitions/([^.]*).js$ /scripts/competitions/$1.js [R=201]
它确实重定向到 201,但在 Created 标题下给我一条错误消息
Created
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Apache/2.4.7 (Ubuntu) Server at tracker.test.local Port 80
如果脚本文件确实存在(它确实存在用于该错误消息测试),那么它会捕获、重定向但不会加载脚本文件。
所以我所追求的是正常的 200 响应加上 JS 正文(当它存在时)和 200 加上空正文(如果可能的话最好)或找不到文件的错误消息。
从我的日志中转储第一个重写规则(以 ^/
开头):
[Tue Nov 24 20:51:40.594882 2015] [rewrite:trace3] [pid 3593:tid 139723926361856] mod_rewrite.c(468): [client 192.168.1.6:55261] 192.168.1.6 - - [tracker.test.local/sid#7f14130f5618][rid#7f14130540a0/initial] [perdir /var/www/test/tracker/root/] strip per-dir prefix: /var/www/test/tracker/root/scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js -> scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js
[Tue Nov 24 20:51:40.595077 2015] [rewrite:trace3] [pid 3593:tid 139723926361856] mod_rewrite.c(468): [client 192.168.1.6:55261] 192.168.1.6 - - [tracker.test.local/sid#7f14130f5618][rid#7f14130540a0/initial] [perdir /var/www/test/tracker/root/] applying pattern '^/scripts/competitions/([^.]*).js$' to uri 'scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js'
[Tue Nov 24 20:51:40.595313 2015] [rewrite:trace1] [pid 3593:tid 139723926361856] mod_rewrite.c(468): [client 192.168.1.6:55261] 192.168.1.6 - - [tracker.test.local/sid#7f14130f5618][rid#7f14130540a0/initial] [perdir /var/www/test/tracker/root/] pass through /var/www/test/tracker/root/scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js
希望有人能把我推向正确的方向。
*更新当文件确实存在时从日志中转储,它显示 201,但也显示遇到内部错误的消息
[Tue Nov 24 21:27:31.134452 2015] [rewrite:trace3] [pid 3593:tid 139723842434816] mod_rewrite.c(468): [client 192.168.1.6:55684] 192.168.1.6 - - [tracker.test.local/sid#7f14130f5618][rid#7f14130440a0/initial] [perdir /var/www/test/tracker/root/] strip per-dir prefix: /var/www/test/tracker/root/scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js -> scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js
[Tue Nov 24 21:27:31.134479 2015] [rewrite:trace3] [pid 3593:tid 139723842434816] mod_rewrite.c(468): [client 192.168.1.6:55684] 192.168.1.6 - - [tracker.test.local/sid#7f14130f5618][rid#7f14130440a0/initial] [perdir /var/www/test/tracker/root/] applying pattern '^scripts/competitions/([^.]*)\\.js$' to uri 'scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js'
[Tue Nov 24 21:27:31.134495 2015] [rewrite:trace2] [pid 3593:tid 139723842434816] mod_rewrite.c(468): [client 192.168.1.6:55684] 192.168.1.6 - - [tracker.test.local/sid#7f14130f5618][rid#7f14130440a0/initial] [perdir /var/www/test/tracker/root/] forcing responsecode 201 for /var/www/test/tracker/root/scripts/competitions/A9ACCC8F-B78A-4E0D-8023-51D8F56B5C55.js
最佳答案
当文件不存在时,使用服务器端脚本作为回退。此外,前导目录(包括斜杠)已从 .htaccess
规则中删除。
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(scripts/competitions/)[^./]*\.js$ $1not_exist.php [L]
它不一定是 PHP,它可以只是一个静态 js 文件,因此它以正确的 MIME 类型提供。你只需要一些东西来返回默认内容。将默认值放在与比赛文件相同的目录中,并在规则中引用它。内容可以是:
<?php
header('Content-Type: application/javascript');
echo '// ', basename($_SERVER['REQUEST_URI']), ' does not exist yet.';
关于apache - 尝试为丢失的文件强制使用状态代码 200 的 RewriteRule 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33890423/
我在 Ubuntu 10.04 LTS 上运行 Eclipse Galileo。今天 Ubuntu 在我身上崩溃了,重新启动后,我发现 Eclipse 已经完全失去了 Java Perspective
我使用配置了 sonata_user 的 SonataAdminBundle在 config.yml : sonata_user: impersonating: route:
我有 ubuntu 14.04 但它不见了 docker exec sudo docker exec -it ubuntu_bash bash 我希望在现有正在运行的 docker 容器中运行交互式
我正在使用 Ubuntu 8.04/32 位(作为虚拟机)。在一个不是 min 的项目上执行一些 make 时,我得到了错误: g++:/usr/lib/libstdc++.a: 没有这样的文件或目录
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我正在尝试获取有关我在 UIImagePicker 中选择的视频的一些数据。 因此,当它进入 UIImagePicker 委托(delegate)方法(如下)时,我知道我需要使用信息字典中的 UIIm
我的网站最近被可能的黑客行为删除了。我上传了备份的文件夹和数据库,但现在我的 View 没有显示。其他一切都有效。我想不出有什么变化,只是上传了几天前的备份。 这些字段在 admin/build/vi
我执行以下操作来设置我的 session ,这是有效的,因为 echo 出现了。但是当我转到下一页或另一页时, session 不存在吗?我做错了什么? $session_start(); if ($
我试图在 BigQuery 中使用这段代码,显然是从 GA 中获取数据,但 _TABLE_SUFFIX 似乎有问题。错误显示“错误:无法识别的名称:_TABLE_SUFFIX at [12:3]”您能
输入:8(2 5 6 9 10 2 7 4)预期输出:(2 7 9 9 12 5 7 6)实际输出:(2 7 9 9) 这是我的大学作业,也是我第一次在这里提问。我不知道为什么,但 10 没有扫描,有
$('div'); // 我在上面的代码中遇到错误。在检查 .js 代码时,我找不到名为 $ 的函数,但根据文档,应该有一个。 最佳答案 试试 http://ajax.googleapis.co
以下简单代码的输出对我来说有点奇怪。它错过了在控制台上打印的 0 到 100 之间的一些数字。 谁能解释一下为什么省略打印?我对并发编程完全陌生。 import java.util.concurren
我正在学习 xamarin 以构建移动应用程序,但我对 Xamarin 和移动应用程序一无所知。我打开了一个空白的移动应用程序,其中有“Hello world”示例并编辑了一些文本,但我的应用程序图标
我正在将一些值存储到 sqlite 数据库中。因此,数据是作为字符串从文本字段收集的,然后转换为 double 并持久化。 这是我试过的 NSDecimalNumber 答案; value.answe
我有一个奇怪的案例。突然,其中一个表中的一些记录(这么多记录)丢失了。首先,我认为这是由我的 PHP 脚本中的错误引起的。但是,我检查了一下,我的脚本中没有DELETE操作,只有UPDATE。有谁知道
我正在复制 NSString来自 NSDictionary进入本地NSString使用 [[NSString alloc] initWithString:] ,对其进行处理(删除一些字符),然后将其发
当保存在根文件夹中时,我的非常基本的 html 页面保持样式。为一个组创建了一个新文件夹,但是当我将页面移动到该文件夹时,它们似乎失去了与 css 文件的连接。 认为问题可能出在链接上,因为它现在
我需要使用 OpenCV 训练一些图像。但问题是,我找不到 opencv_createsamples 程序。我以正常方式安装了 OpenCV,因为我使用的是 Windows 7。这个 opencv_c
我有一个绑定(bind)到 JTable 的 ArrayList。之后 bindingGroup.unbind(); bindingGroup.bind(); (完成刷新数据)我丢失了表格单元格渲
所以基本上我们只是丢失了一个 keystore 和备份 keystore 。但是我们可能知道原始 keystore 的密码。 我的问题是,如果我们知道原始 keystore 的密码,我们可以重新生成
我是一名优秀的程序员,十分优秀!