### 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-