phpcms伪静态自定义

首先增加内容模块的url定义

phpcmsurl1

然后把要启用此规则的分类设置为此规则

phpcmsurl2

修改代码 phpcms\modules\content\classes\url.class.php 修改如下内容

phpcmsurl4

增加 .htaccess

phpcmsurl3

修改的代码下载看这里

注意,以上只是例子代码, catid=6是原始phpcms里面国内新闻对应的id,你正式应用
请修改为你自己的,并且每一个 栏目的伪静态都 大概需要增加这样4行伪静态代码,

注意,不建议做多级嵌套的栏目类分类,比如 /guonei/lanmu1/  , /guonei/lanmu2/
最好只做一级目录就好了

杰奇jieqi 的opf问题,wap端读取opf数据不是最新的

很奇怪的一个错误, 经过简单的核查, 发现出现这种错误的小说占那么一部分.

大致情况是这样
我的小说站数据pc/wap 是共用一个的, pc端一点问题都没有.
而在wap有的小说是没问题的, 有问题的则是打开目录没有问题, 前一部分章节没有问题, 但是后面的章节内容 点之后出现类似PC端404的意思. 给浏览器的显示页面还是当前小说的目录页(没有调出小说内容页), 但是很多数据已经没了, 比如所属类别, 小说名, 最新章节.

仔细检查发现了下面的问题:
1. 出问题的章节, 应该都是类似PC的404页面, 但是却可以调用出部分数据.
2. A小说共100章, 第51章出了问题, 那么在第50章内容页, 点下一章的时候, !!!发现提交的URL是当前小说的目录页.!!!

根据 modules/article/wapreader.php?aid=57549&cid=9345391

查看到 wapreader.php 里面

if(!$package->showChapter($_REQUEST[‘cid’]))
{
echo __LINE__;die();
$package->showIndex();
}

知道应该是  $package->showChapter函数的问题

进而查找 class/wappackage.php 里面
function showChapter($cid)
{
global $jieqiConfigs;
global $jieqi_file_postfix;
$i=0;
$num=count($this->chapters);
while($i<$num){
$tmpvar=$this->getCid($this->chapters[$i][‘href’]);
if($tmpvar==$cid){
$this->makeHtml($i+1, true, true);
return true;
}
$i++;
}
return false;
}

应该是循环后得到了false值,那么为什么呢,说明 $this->chapters 这个值里面没有$_REQUEST[‘cid’]的参数,那么 $this->chapters 从何而来呢,
发现 loadOPF() 函数读取 index.opf ,得到 chapters的数组,里面包含的章节的标题和地址,那么只需要更新这个 index.opf 就能得到最新的数据,那么
$tmpvar=$this->getCid($this->chapters[$i][‘href’]);
就能得到某个章节的值了.
问题解决

nginx 的php配置支持php-fpm和Apache,失败后自动切换

其中 error_page 502 = @apache; 是关键!!!

 location ~ .*\.php$
{
        error_page 502 = @apache;
        fastcgi_pass  127.0.0.1:9002;
        fastcgi_index index.php;
        fastcgi_param GATEWAY_INTERFACE CGI/1.1;
        fastcgi_param SERVER_SOFTWARE nginx;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param DOCUMENT_URI $document_uri;
        fastcgi_param DOCUMENT_ROOT $document_root;
        fastcgi_param SERVER_PROTOCOL $server_protocol;
        fastcgi_param REMOTE_ADDR $remote_addr;
        fastcgi_param REMOTE_PORT $remote_port;
        fastcgi_param SERVER_ADDR $server_addr;
        fastcgi_param SERVER_PORT $server_port;
        fastcgi_param SERVER_NAME $server_name;
        # PHP only, required if PHP was built with --enable-force-cgi-redirect
        fastcgi_param REDIRECT_STATUS 200;
}

 location @apache {
        proxy_pass http://127.0.0.1:88;
        proxy_connect_timeout 30s;
        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    32k;
        proxy_buffers     4 32k;
        proxy_busy_buffers_size 64k;
        proxy_redirect     off;
        proxy_hide_header  Vary;
        proxy_set_header   Accept-Encoding '';
        proxy_set_header   Host   $host;
        proxy_set_header   Referer $http_referer;
        proxy_set_header   Cookie $http_cookie;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}