小编ins*_*ner的帖子

mod_rewrite 后环境变量在服务器上不可用,但在本地工作

我正在一个站点上工作,在该站点上我使用 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

5
推荐指数
1
解决办法
538
查看次数