home-code

示例❤源码



### Url风格

* 复习一下 贴心猫系统的 Mkv路由
  - 新闻首页:news
  - 新闻分类列表:news-1234
  - 新闻详情:news.5678
  - 楼盘首页:house
  - 楼盘详情:house.5678
  - 楼盘图片:house.5678.pics

* Url风格
  - 首先,我们把地址补充完整(省略域名)类似为:/home.php?news.2018-88-8899
  - 这是默认的动态url,本节讨论 要实现如下风格的url:
  - 静态地址:/html/news/2018/88-8899.htm
  - 伪静态地址:/home/news.2018-88-8899.htm
  - Pathinfo模式:/home.php/news.2018-88-8899
  - Pathinfo模式+htm后缀:/home.php/news.2018-88-8899.htm

贴心猫静态,伪静态实现;其实非常简单!
(如果服务器设置碰到的麻烦,不能算在内...)


### 静态页实现

* /_config/配置
  - 配置模板目录下的 `/_config/*.*` 相关文件;
  - 可以分开模型配置:如va_home.php(首页),vc_news(新闻),  
    配置 `c.vmode` 值为 `static`即可;
  - 如果页面还未生成静态,依然打开的是动态页;
  - 访问页面(不管是静态还是动态)会自动生成静态或(按设置)更新静态页;

* 后台批量生成静态页
  - 可在后台 批量生成静态页;
  - 操作入口:`后台 >> 工具 >> 系统工具 >> 系统缓存 | 静态` 

* 温馨提示
  - 生成实体 html 静态:占用服务器空间,维护量大;已不提倡使用;
  - 现在的 缓存技术 和 伪静态技术非常普及,生成实体静态文件已无多大意义;
  - 自 v4.8开始,已不建议生成实体静态;


### 伪静态实现

* 配置系统
  - 文件:\root\cfgs\sycfg\sy_vopcfg.php
  - 找到某一模板节点如['comm'] 下,(把注释的4行)去掉前两行注释:
  - 参考下方 `配置代码`:

* 配置结果
  - 这时候,你打开首页,或某动态页:查看生成的链接(不要点击),已经是伪静态链接了;
  - 理论上,有了以上配置,贴心猫系统已经配置完成!?
  - 继续点击这些 伪静态链接:可能是类似 404 错误:
  - 那就是剩下的事情 --- 配置web服务器!且看下文分解:

* 配置代码

```
  '开心猫市', // Custmao
  '/home.php',
  '?', // [1.屏蔽此行:为动态模式]; [2.设置为`?`:为Pathinfo模式]; [3.设置为`/`:为伪静态模式]; 参考:imcat.txjia.com/book.php/super-rewrite
  //'.htm', // 伪静态后缀
  //'0', // 建议不开启, 伪静态-替换第一层/chn/目录,需要调整伪静态规则
  //array('/home.php','/home.htm'), //  建议为空, 伪静态首页替换;需要增加伪静态规则
```

提示:提取的代码块,上下文省略...
本系统的[sy_vopcfg.php源码]({=PATH_PROJ}/demo.php?home-code&fp={proj}/root/cfgs/sycfg/sy_vopcfg.php)


### Web服务器

* Apache 配置
  - 复制文件:`\@read\rbak\.htaccess` 复制到web(或系统)根目录,可根据需要,删除不必要的注释;
  - 开启apache的url_rewrite模块;
    [参考链接](https://www.baidu.com/s?wd=%E5%BC%80%E5%90%AFapache%E7%9A%84url_rewrite%E6%A8%A1%E5%9D%97)
  - 重启web服务 即可。

* IIS7+ 配置
  - 如需要:先[下载](https://www.iis.net/downloads/microsoft/url-rewrite)安装 URL Rewrite;
  - 导入配置文件:在站点管理界面,找打URL重写,导入上述`.htaccess`文件到重写规则;
  - 重启web服务 即可。

* Nginx 配置
  - Nginx下设置伪静态方法与Apache差不多;  
    直接在nginx.conf (或者在对应的\*.conf) 中找到需设置伪静态规则的服务器对应字段;  
    在`server{ location/{ } }`中添加代码;
  - 或者:自行找资料,把上述`.htaccess` 规则转化为Nginx规则;  
    本节后面,也有参考转化工具链接;
  - 配置好,重启web服务 即可。



### 配置组合

* [01]动态url模式 (屏蔽后四行):
  - eg. /home.php?news, /home.php?news.2018-88-6699

```
  '开心猫市', // [01]动态url模式
  '/home.php',
  //'/', // 屏蔽
  //'.htm', // 屏蔽
```

* [02]Pathinfo模式 (设置第三行为`'?',`,第四行可有可无):
  - eg. /home.php/news, /home.php/news.2018-88-6699

```
  '开心猫市', // [02]Pathinfo模式
  '/home.php',
  '?', // 把`?` ->替换为 `/`
  //'.htm', // Url后缀,可有可无
```

* [03]伪静态模式 (设置第三行,第四行):
  - eg. /home/news.htm, /home/news.2018-88-6699.htm

```
  '开心猫市', // [03]伪静态模式
  '/home.php',
  '/', // 把`.php?` ->替换为 `/`
  '.htm', // 伪静态后缀
```

* 配置选择
  - 动态模式:web服务器不需要任何配置,如果是虚拟主机,没有服务器配置权限,且不支持Pathinfo,那只能选动态模式
  - Pathinfo模式:支持pathinfo即可使用(nginx默认是不支持pathinfo)
  - 伪静态模式:如果自己可自由设置服务器,或者可以设置伪静态规则方可使用
  - 如果是nginx,设置支持Pathinfo模式和伪静态模式都要设置`nginx.conf`,不如直接设置伪静态模式好了

* 最后两行配置:
  - 一般建议屏蔽;需要者,根据情况开启,并设置伪静态规则
  ```
    //'0', // 建议屏蔽, 伪静态-替换第一层/home/目录,需要调整伪静态规则
    //array('/home.php','/home.htm'), //  建议为空, 伪静态首页替换;需要增加伪静态规则
  ```

* 高级配置-再去一层目录
  - url地址如:/home/news.2018-88-8899.htm,如果需要再去掉`/home/`目录;
  - 上述 配置代码,启用第3行代码,设置为非零即可;
  - 提示1:伪静态规则,也要相应的修改;
  - 提示2:博客/房产:前端只有一组主要前端模板,可用此方案,
  - 提示3:企业站,因前端有多语言版,最多只能针对一个语言版本 去掉一层目录如`/vcn/`,建议不用此方案;

* 高级配置-首页静态化
  - 首页如:/home.php,也要静态化;
  - 上述 配置代码,启用第4行代码,去掉//屏蔽符即可;
  - 提示4:需要增加一行伪静态规则;


### 工具和资源

* Rewrite 规则转化工具
  - [onexin.net / Rewrite伪静态转换工具v6.0](https://www.onexin.net/rewrite.php)
  - [tool.lu / htaccess转nginx](https://tool.lu/htaccess2nginx/)
  - [chacuo.net / apache rewrite 转nginx](http://web.chacuo.net/netapache2nginx/)
  - [toolnb.com / 伪静态转换](https://www.toolnb.com/tools/rewriteTools.html)

* 参考资源
  - [IIS7 伪静态 web.config 配置方法【详解】](http://www.cnblogs.com/yanzhen/archive/2012/01/07/iis7-wei-jing-tai.html)
  - [Apache mod_rewrite](http://httpd.apache.org/docs/2.4/zh-cn/rewrite/)
  - [13个实用的Apache Rewrite重写规则](http://www.jb51.net/article/47907.htm)
  - [Apache和Nginx设置伪静态(URL Rewrite)的方法](http://bbs.qcloud.com/forum.php?mod=viewthread&tid=3545)
  - [csdn.net:Apache和Nginx设置伪静态(URL Rewrite)的方法](https://blog.csdn.net/qq_25600055/article/details/78543614)


<!--
#-# 百度BAE空间 配置

* 配置 app.conf 文件(演示站demo):

```
  - url : ^/dev/([\w|\.|\-|\_]+)\.htm$
    script : /dev.php?$1
  - url : ^/doc/([\w|\.|\-|\_]+)\.htm$
    script : /doc.php?$1
```

* 百度BAE相关参考:
  - http://www.laifuying.com/archives/464 
  - 百度BAE app.conf 处理301 URL rewrite 重定向的一些方式及遇到的问题
  - https://yq.aliyun.com/articles/27609
  - 关于ThinkPHP在BAE上URL的rewrite问题
  - 注意 YAML 语法与缩进 

* 提示
  - 百度BAE 已停使用!
-->

-End-