标签: server-side-includes

SSI 包括不使用 Apache 在 Debian 上工作

我试图让 SSI 在运行 Apache 的 Debian 上工作,但是.shtml文件没有被解析。从 PHP 文件中,phpinfo()我可以看到加载的模块部分显示以下内容:

mod_mime_xattr mod_mime mod_mime_magic
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/mods-enabled/mime.conf我有(除其他外):

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/sites-enabled/domain.com.conf(对于有问题的虚拟主机)我有:

<Directory /home/username/public_html>
Options +Includes
allow from all
AllowOverride All 
</Directory>
Run Code Online (Sandbox Code Playgroud)

为了更好地衡量,我还添加了以下内容:

<Directory />
Options +Includes
</directory>
Run Code Online (Sandbox Code Playgroud)

在用户的.htaccess文件中,我尝试添加:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
Run Code Online (Sandbox Code Playgroud)

似乎没有任何效果。我怎么能调试呢?

编辑:

这是输出,ls /etc/apache2/mods-enabled/以防万一

actions.conf          dav_svn.load         proxy_balancer.load
actions.load          deflate.conf         proxy.conf
alias.conf            deflate.load         proxy_connect.load
alias.load            dir.conf             proxy_http.load
auth_basic.load       dir.load             proxy.load
auth_digest.load      env.load             python.load
authn_file.load …
Run Code Online (Sandbox Code Playgroud)

debian server-side-includes apache-2.2

12
推荐指数
1
解决办法
9790
查看次数

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
查看次数

如何在 Apache 中启用 SSI?

我在网上找到了信息,但对我来说没有意义。我想确切地知道我应该进入哪些文件,以及我应该在哪里以及如何修改它们。

configuration server-side-includes apache-2.2

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

如何使用 Apache 有条件地处理未定义的 SSI 变量?

我想在一堆页面中包含一个标题,如下所示:

header.html

<html>
  <head>
    <title>My site</title>
  </head>
Run Code Online (Sandbox Code Playgroud)

为了启用特定于页面的标题,我尝试使用我在每个页面中设置的 SSI 变量:

page1.html

<!--#set var="TITLE" value="first page" -->
<!--#include file="header.html" -->
Run Code Online (Sandbox Code Playgroud)

然后我正在修改header.html以使用该变量:

<title>My site - <!--#echo var="TITLE" --></title>
Run Code Online (Sandbox Code Playgroud)

这工作正常,但当然,它有一个不幸的影响,如果TITLE没有设置,结果是:

<title>My site - (none)</title>
Run Code Online (Sandbox Code Playgroud)

因此,我正在尝试各种尝试,echo根据它是否none存在(例如,<!--#if expr="TITLE != \(none\)" --> ... <!--#endif-->)来有条件地对该变量进行调整……但似乎没有任何效果。

似乎这将是一个非常普遍的要求。有没有人参考工作解决方案?

server-side-includes apache-2.2

4
推荐指数
2
解决办法
3434
查看次数

如何让 Apache2 以内容类型“text/html”而不是“text.html”的形式提供 .shtml 文件?

我正在一个网站上工作,实现为 shtml,当我尝试从 IE8加载主页 ( http://simplyclassicremodeling.com ) 时,它说它无法打开文件,因为它作为内容类型传输“文本.html”。该页面从 Chrome 加载正常,并在 Firefox 中加载(有一些与此处无关的 CSS 问题)。

httpd.conf 有:

Options Includes Indexes FollowSymLinks ExecCGI 
AddHandler cgi-script .cgi .pl
AddType text/html .shtml
AddHandler server-parsed .shtml
Run Code Online (Sandbox Code Playgroud)

再往下:

AddType text/html .shtml 
AddOutputFilter INCLUDES .shtml
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript application/javascript
Run Code Online (Sandbox Code Playgroud)

来自 Telnet 会话的 HTTP 标头是:

GET http://simplyclassicremodeling.com/ HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 27 Jan 2012 21:57:54 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.9-dev DAV/2 PHP/5.2.6
Accept-Ranges: bytes
Cache-Control: max-age=2592000, public
Expires: Sun, 26 Feb 2012 21:57:54 …
Run Code Online (Sandbox Code Playgroud)

server-side-includes apache-2.2

3
推荐指数
1
解决办法
2235
查看次数

NGINX SSI 不工作

我无法让 SSI 在 NGINX 上工作。如果您点击http://www.bakerycamp.com/test.shtml ,您可以看到问题。这是该文件的内容:

<!--# echo hi -->
Run Code Online (Sandbox Code Playgroud)

如果你在浏览器中点击这个,你会在内容中看到 SSI 指令——显然 NGINX 没有解释 SSI 指令。

我的 NGINX 配置文件如下所示:

server {
    listen  80;
    server_name     bakerycamp.com www.bakerycamp.com;
    access_log      /var/log/nginx/bakerycamp.access.log;
    index           index.html;
    root            /home/bakerycamp.com;
    location /      { ssi   on; }

    # Deny access to all hidden files and folders
    location ~ /\.  { access_log off; log_not_found off; deny all; }
}
Run Code Online (Sandbox Code Playgroud)

我没有从源代码构建 NGINX,而是使用 apt-get 安装它。我假设它有 SSI 模块(因为这是默认的)但也许没有?我应该硬着头皮从源头重建吗?无论如何,是否可以判断已安装的 NGINX 是否支持 SSI 并且我的配置是错误的?

nginx web-server server-side-includes

2
推荐指数
1
解决办法
3501
查看次数