- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试映射一些文件扩展名以由 nph(非解析 header )CGI 可执行文件执行。
假设我想访问一个 URL http://server/file.ext
并将“ext”文件扩展名映射到“触发”我的 nph CGI (/var/www/cgi-bin/nph-test.sh)。
为此,我使用 mod_actions 和 mod_cgid,这是我的相关配置信息:
<VirtualHost *:80>
DocumentRoot /var/www/htdocs
ScriptAlias /cgi-bin /var/www/cgi-bin
Action cgi-wrapper /cgi-bin/nph-test.sh
AddHandler cgi-wrapper .ext
</VirtualHost>
这是我的 nph-test.sh shell:
#!/bin/sh
echo "HTTP/1.0 200 OK"
echo "Server: Shell/1.0"
echo "Status: 200 \"OK\""
echo "Connection: close"
echo "Content-type: text/html"
echo ""
echo "<html><body><pre>"
echo "QUERY_STRING = "${QUERY_STRING}
echo "PATH_TRANSLATED = "${PATH_TRANSLATED}
echo "</pre></body></html>"
当我使用此 URL 访问 nph-test.sh http://localhost/cgi-bin/nph-test.sh?Hello
我得到:
HTTP/1.0 200 OK
Server: Shell/1.0
Status: 200 "OK"
Connection: close
Content-type: text/html
<html><body><pre>
QUERY_STRING = Hello
PATH_TRANSLATED =
</pre></body></html>
使用此 URL 中的文件映射时出现问题 http://localhost/file.ext
我得到一个 double http header (它正在处理 nph cgi像非 nph cgi 脚本一样的脚本):
HTTP/1.0 200 OK
Server: Shell/1.0
Status: 200 "OK"
Connection: close
Content-type: text/html
<html><body><pre>
QUERY_STRING =
PATH_TRANSLATED = /var/www/htdocs/file.ext
</pre></body></html>
HTTP/1.1 200 OK^M
Date: Tue, 18 Mar 2014 14:32:29 GMT^M
Server: Apache/2.4.6 (Ubuntu)^M
Content-Length: 0^M
Keep-Alive: timeout=5, max=100^M
Connection: Keep-Alive^M
Content-Type: text/x-sh^M
^M
搜索了几个小时后,我只找到了这个 2003 apache bug report 。这也表明理论上尚未应用补丁。
但是搜索当前的mod_cgid source code我可以看到代码已更改为能够捕获“nph-”cgi 文件前缀(strrchr):
1372 if ((argv0 = strrchr(r->filename, '/')) != NULL) {
1373 argv0++;
1374 }
1375 else {
1376 argv0 = r->filename;
1377 }
1378
1379 nph = !(strncmp(argv0, "nph-", 4));
apache2 有没有办法将文件扩展名映射到 nph cgi? (不返回两个http header )
还有其他方法可以做到这一点或有任何解决方法吗?
我在 Ubuntu 13.10 中使用默认的 apache2 服务器:
# apachectl -V
Server version: Apache/2.4.6 (Ubuntu)
Server built: Dec 5 2013 18:32:22
Server's Module Magic Number: 20120211:23
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
使用mod_rewrite模块解决问题的更改配置:
<VirtualHost *:80>
DocumentRoot /var/www/htdocs
ScriptAlias /cgi-bin /var/www/cgi-bin
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?(.*\.ext)$ /cgi-bin/nph-test.sh?$1 [PT]
RewriteRule ^/?(.*\.ext)$ /cgi-bin/nph-test.sh?$1&%{QUERY_STRING} [PT]
</VirtualHost>
最佳答案
我认为在 2.4.x 源代码上不可能(直接)。正如您正确指出的那样,该错误当前位于 reopened status 中.
建议的补丁包含两个主要修改:
我无法测试,但我认为可以使用 mod_rewrite 解决此错误:查看 mod_rewrite 文档似乎与 nph 配合得很好
您可以在 documentation page 中找到完整的 nph- + mod_rewrite 示例
关于Apache2 发送两个带有映射 "nph-"CGI 的 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483281/
请看一下我的代码。 int main () { Program* allcommand = new Program; allcommand->addCommand("add", new
因此,当我遇到调试断言时,我正在编写代码。现在我很想知道为什么这段代码不起作用: for(Model::MeshMap::iterator it = obj1->GetMeshes().begin()
这是我上一个问题的延续 Group, Sum byType then get diff using Java streams . 按照建议,我应该作为单独的线程发布,而不是更新原始线程。 因此,通过我
我正在实现一些非常适合 map 的代码。但是,我要迭代的列表中有大量对象,所以我的问题是哪种方法是解决此问题的最佳方法: var stuff = $.map(listOfMyObjects, some
我正在尝试创建一个包含不同类的成员函数指针的映射。成员函数都具有相同的签名。为了做到这一点,我所有的类都继承了一个 Object 类,它只有默认构造函数、虚拟析构函数和一个虚拟 ToString()
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: how do you make a heterogeneous boost::map? 有可能在 C++ 中
我有一个 Mysql 查询,请检查以下内容: SELECT `tbl_classSubjects`.`classID` , `tbl_classSubjects`.`sectionID` , `tbl
抱歉,这可能是一个基本问题。 JNA直接映射和接口(interface)映射有什么区别? 我的解释是否正确: 直接映射 : 直接使用库对象(如 Java 中的静态 main) 接口(interface
在 Twitter's Scala school collections section ,它们显示了一个带有偏函数作为值的 Map: // timesTwo() was defined earlie
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
据我了解,从 scala stdlib 声明一个映射并没有将其专门用于原始类型。我要的不是付出装箱/拆箱的代价,而是同时拥有scala map 的接口(interface)。一个明显的选择是使用 tr
如何为这样的 JSON 响应创建对象映射,它只是一个整数数组: [ 565195, 565309, 565261, 565515, 565292, 565281, 566346, 5
是否可以为 DTO 对象创建映射然后查询它们 而不是域?如果不解释为什么? 如果我需要几个 dtos 怎么办? DTos 是只读的 ID 由 NH 自动生成 将来这些 dtos 将设置映射到链接的 d
我有一个返回的函数(常规代码) [words: "one two", row: 23, col: 45] 在 Scala 中,我将上面更改为 Scala Map,但随后我被迫将其声明为 Map[Str
我有一组与 Vanilla 磅蛋糕烘焙相关的数据(200 行),具有 27 个特征,如下所示。标签caketaste是衡量烤蛋糕的好坏程度,由 bad(0) 定义, neutral(1) , good
我有试图映射到新代码的遗留代码。 OLD_PERSON pid sid name age NEW_PERSON pid sid fid age RESOLVE_PERSON pid fid statu
我有一个表,其中一个字段可以指向其他 3 个表之一中的外键,具体取决于鉴别器值是什么(Project、TimeKeep 或 CostCenter。通常这是用子类实现的,我想知道我有什么 注意子类名称与
我有一个类型 [ST s (Int, [Int])] 的绑定(bind)我正在尝试申请runST使用映射到每个元素,如下所示: name :: [ST s (Int, [Int])] --Of Cou
在我正在进行的项目中,我有以下实体:分析师、客户 和承包商。每个都继承自基类 User。 public abstract class User { public virtual int Id
我想知道是否可以在 Vim 中创建一个映射(对于普通模式),允许用户在映射执行之前输入。 我想为我最常用的 grep 命令创建一个快捷方式的映射。我希望命令允许输入我正在搜索的内容,然后在输入时执行。
我是一名优秀的程序员,十分优秀!