我正在一个站点上工作,在该站点上我使用 SSI 在 HTML 页面上设置一个被解析的变量,然后在mod_rewrite
重写后由脚本获取该变量。这适用于我的本地设置,但由于某种原因它不适用于生产服务器(两者都是 apache 2.2.22)。以下是相关位:
该perl
脚本:
my $working = ($ENV{'HTTP_my_var'} || $ENV{'REDIRECT_HTTP_my_var'}) || "NO";
print "Content-type: text/html\n\n";
print "is it working? <b>$working</b>";
Run Code Online (Sandbox Code Playgroud)
相关线路来自 .htaccess
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ /$1.html [L]
RewriteRule ^my_tst$ /cgi-bin/my_tst.cgi [L]
Run Code Online (Sandbox Code Playgroud)
HTML文件:
<!--#set var="HTTP_my_var" value="YES" -->
<!--#include virtual="/cgi-bin/my_tst.cgi" -->
<br>
<!--#include virtual="/my_tst" -->
Run Code Online (Sandbox Code Playgroud)
这是我本地机器上的结果:
它在工作吗?是的
它在工作吗?是的
但是在生产服务器上:
它在工作吗?是的
它在工作吗?不
比较服务器配置,唯一真正想到的是生产服务器httpd -M
上没有列出 apreq_module (shared)
,本地服务器也没有列出 fcgid_module (shared)
(等等)。可能是由于这些吗?是什么导致了这种奇怪的行为不匹配?
在情况下,它需要提的是,当我做的转储%ENV
,没有 …
mod-rewrite .htaccess suexec server-side-includes apache-2.2