2015年11月

shtml[配置以为伪静态]

○SSI说明:SSI(Server Side Include),通常称为服务器端嵌入,是一种类似于ASP的基于服务器的网页制作技术。大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server等均支持SSI命令。主要有以下几种用用途:
     1 显示服务器端环境变量<#echo>
     2 将文本内容直接插入到文档中<#include>
     3 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
     4 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
     5 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式) 高级SSI<XSSI>可设置变量使用if条件语句。
     <注>以上内容来源:百度百科

○本应用要求:html中插入当前时间及另外一段html文本。

○Apache的安装和配置:SSI的应用需要安装ApacheServer,并且安装完成后需要修改其配置文件(这里以version2.2为例进行说明,默认安装路径为C:\Program Files\Apache Software Foundation\)
1 httpd.conf文件更新
・文件位置:\Apache2.2\conf\httpd.conf
・更新内容1:
     # First, we configure the "default" to be a very restrictive set of
     # features.  
     #
     <Directory />
         Options FollowSymLinks    →前加#改为注释
         AllowOverride All
         Order deny,allow             →前加#改为注释
         Deny from all                   →前加#改为注释
         Xbithack full                     →改为"Xbithack ON"
         Options Includes               →改为"Options +Includes"
     </Directory>

・更新内容2:
    # The Options directive is both complicated and important. Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    Options FollowSymLinks MultiViews Includes        →追加此行
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None                                              →改为"AllowOverride All"

・更新内容3:
     #
     # "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin" should be changed to whatever your ScriptAliased
     # CGI directory exists, if you have that configured.
     #
     <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
         AllowOverride None        →改为"AllowOverride All"
         Options None
         Order allow,deny
         Allow from all
     </Directory>

・更新内容4:
    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    AddType text/html .shtml
    AddType text/x-server-parsed .html        →追加此行

2 .htaccess文件做成
・文件位置:\Apache2.2
・文件内容:
     Options +Includes
     AddOutputFilter INCLUDES .shtml
     AddHandler server-parsed html
     AddType text/x-server-parsed-html .shtml .html .htm
・做成方法:由于windows不能作成只有文件后缀没有文件名的文件,所以可以先将上面的内容作成一个txt文件,如:htaccess.txt。然后进入cmd修改其文件名。重命名语句格式为:rename htaccess.txt .htaccess
・说明:由于本应用的要求是在html中插入文本,而不是在shtml中插入,所以.htaccess文件的配置是必不可少的。

3 重起Apache Server

○html做成
1 文件位置: \Apache2.2\htdocs

2 text.html
     <head><title>SSI TEST</title></head>
     <body><form>
          <!--#include file="SSI_Insert.html"-->
          <!--#echo var="DATE_LOCAL"-->
     </form></body>

3 SSI_Insert.html
     <div style="background-color:#FFCC33">
          <lable id="area3">AREA3</lable>
          <hr>
     </div>


○html的执行:
1 使用IE访问localhost
     http://127.0.0.1/text.html

2 执行效果
     在test.html中插入了insert.html定义的背景色为#FFCC33的DIV和当前时刻

测试连接 www.it.tt/shtml/index.shtml

一个伪静态完美解决反向代理

一个php文件加一个配置伪静态解决反向代理
下面我介绍下如何去做

php我们将会使用curl,主要是抓取过来自己定义的网页,跟之前的反向代理差不多(反向代理就是远程加载目录,当前也类似【个人理解】)
贴中转文件代码
`
$f = $_GET["f"]; //这里是获取url链接作为变量
$ret = curl_get("http://feibing999.com/".$f); //demo 源文件地址+路径
echo $ret; //返回源文件代码展现在浏览器

function curl_get($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// 注意文件格式 utf-8 还是gbk 是否与本页面格式一样,否则需要修改 文件格式
curl_setopt($ch, CURLOPT_HTTPHEADER,array ("Content-Type: text/html; charset=utf-8"));
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ret = curl_exec($ch);
if(curl_errno($ch))
{
curl_close($ch);
return array(curl_error($ch), curl_errno($ch));
} else
{
curl_close($ch);
if(!is_string($ret) || !strlen($ret))
{
return false;
}
return $ret;
}
}
`
下面应该了解访问路径应该是“http://it.tt/curl.php?f=/zqgxc/”
我们将要分析这个路径
例如这个网站是我们的二级域名,我们就应该这样做:
1.中转文件改名为 index.php
2.配置伪静态 nginx 和apache 不同
(“http://it.tt/curl.php?f=/zqgxc/”这个路径应该变成 “http://it.tt/zqgxc/”) 具体操作详细见百度 —— 。——
3.那么这个网站就基本搞成了 不管你是二级域还是二级目录 合理利用伪静态和中转文件完美解决

注意事项:网站内部css样式,图片,js必须使用绝对路径,网站内部链接可以使用相对路径,因为我们已经做伪静态,就是为了避免出现动态的问题,同时也做了优化,增加了网站安全!

方案结束,如果有不懂,或者更好的方案欢迎留言一起讨论

获取真实IP方法

    function get_real_ip() {
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
    $ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
    if($ip){
        array_unshift($ips, $ip); $ip = FALSE;
    }
    for($i = 0; $i < count($ips); $i++){
        if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])){
        $ip = $ips[$i];
        break;
        }
    }
}
return($ip ? $ip : $_SERVER['REMOTE_ADDR']);}