Skip to content

Mysql网站的数据备份和空间转换

2009 October 29
Posted by china

备份使用帝国备份王。可以备份大容量的数据。

在Win服务器下永久链接伪静态的方法

第一种方案:
不需要第三方插件cos-html-cache支持,利用服务器有自定义404错误页面的功能解决问题,但前提是你的服务器或者主机有自定义404错误页面的功能。如果是服务器那肯定可以支持,如果是虚拟主机,需你的服务器供应商提供自定义404错误页面选项。
你只需创建一个404错误页面,并且写入下列4行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。

  1. <?php
  2. header(“HTTP/1.1 200 OK”);
  3. $ori_qs = $_SERVER['QUERY_STRING'];
  4. $pattern = ‘/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i’;
  5. preg_match($pattern, $ori_qs, $matches);
  6. $_SERVER['PATH_INFO']    = $matches[1] . ‘?’ . $matches[2];
  7. $_SERVER['REQUEST_URI']  = $_SERVER['PATH_INFO'];
  8. $query_args              = explode(‘&’, $matches[2]);
  9. unset($_GET);
  10. foreach ($query_args as $arg)
  11. {
  12.     $the_arg = explode(‘=’, $arg);
  13.     $_GET[$the_arg[0]] = $the_arg[1];
  14. }
  15. include(‘index.php’);
  16. ?>

复制代码

具体设置步骤:

  • 新建一个记事本,在里面写入上面代码,保存,连同txt格式重新命名为wp404.php。将wp404.php上传到网站根目录。
  • 设置404自定义错误指向wp404.php,一般来说,绝大多数服务器控制面板均提供该选项。
  • 进入wordpress后台,设置(Options)-永久链接(Permalinks),你就当自己的主机是linux主机使好了,任意、随便设置自己喜欢的伪静态地址格式及静态地址后缀。
    例如:
    /y%year%/%post_id%.html
    /%year%/%monthnum%/%post_id%.html
    /%year%/%monthnum%/%postname%.html
    我用的格式是:/%year%/%monthnum%/%postname%

第二种方案:
无Rewrite用cos-html-cache实现静态化
要求:使用下载cos-html-cache 1.1
具体设置步骤:

  • 下载cos-html-cache 1.1 ,解压,传到/wp-content/plugins/目录,在后台”插件”中启用”cos-html-cache”
  • 在”设置”永久选项中,自定义结构修改静态化的规则,例如/html/%postname%/
  • 下载404代码,保存为404.asp。并且上传到网站的跟目录,设置404自定义错误指向404.asp
  • 在后台cos-html-cache 管理选项生成静态页面,就可以实现目的了。

总结:
第一种方案比较简单,可以显现无index.php的永久链接。第二种方案较复杂点,但是可以生成静态页面,且可以实现无index.php的永久链接。

提示:总结这两种方案后,Chris.Ro及时告知我在第一种方案中的404错误页面代码会给google收录和带Query String的链接造成问题。所以我参照他的文章已经修改了代码,现在对收录和带Query String的链接都没有影响。
Chris.Ro说的WP官方给出的方案原文是在这里,如果你有兴趣可以去看看:Pretty WordPress Permalinks on IIS
还补充一定我遇到的问题,如果你是在服务器上安装wordpress,同时你还安装了DEDECMS的话,可能会造成几个网站页面“互串”的现象,简单描述就是输入的是你的网址,显示的是另一个网站的内容,我猜测是因为在wp-404-handler.php里面include(’index.php’)包含的index.php跟DEDECMS的发生冲突。所以我的方法是把wp-404-handler.php放到/wp-content/下,然后修改include(’index.php’)为include(’../index.php’),在自定义404错误页面那的url设置成
/wp-content/wp-404-handler.php。这样就避免了“互串”的现象。

至于第一种,我亲自试验了一下,是在一个测试空间,基本可以通过。将第一种方法的代码作为附件保留在本文章中。哦 原来没有上传功能。再次的在下面写一下代码:

<?php

header(“HTTP/1.1 200 OK”);

$ori_qs = $_SERVER['QUERY_STRING'];

$pattern = ‘/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i’;

 

preg_match($pattern, $ori_qs, $matches);

$_SERVER['PATH_INFO']    = $matches[1] . ‘?’ . $matches[2];

$_SERVER['REQUEST_URI']  = $_SERVER['PATH_INFO'];

$query_args              = explode(‘&’, $matches[2]);

unset($_GET);

foreach ($query_args as $arg)

{

    $the_arg = explode(‘=’, $arg);

    $_GET[$the_arg[0]] = $the_arg[1];

}

 

include(‘index.php’);

?>

以上红色是第一种方法的代码全部

Comments are closed.