何为伪静态
我的答案:伪静态并不是有些老板说的为了加密用的。伪静态其实是使用php写的网页。大概是控制器加接口的语法不方便收录,和所谓的SEO优化,需要一个静态页面。这就是伪静态。
1. 什么是静态网页
- 所谓静态网站, 就是真实存在于Web服务器上的html文档
- 用户访问时, 只需要在浏览器地址栏输入这个文档的完整URL地址就可以
- 静态网页,非常有利于SEO优化, 对于网站的收录和排名非常有利
例如: https://www.test.com/news/20190920/adout.html
2. 什么是动态网页
- 所谓动态网页, 是指网页中的数据是动态生成的, 通常是来自数据库
- 这些数据,只有当存在用户请求时, 数据才会与页面结构结合,动态生成一个完整页面返回给用户
- 这类网站最典型的特征,就是URL地址是动态生成的
类似这样: https://www.test.com?m=home&c=user&m=list&id=18
- 这样的URL地址, 搜索引擎认为是临时的, 不会主动收录的, 不利于SEO优化
- 并且,这样的地址, 对于用户来说也是不友好的, 非常的长,没有规律,总在变化
- 但是, 动态网页, 却可以让用户总是可能获取到最新的信息, 并且可以实现交互,这是静态网页实现不了的
- 所以, 大家迫切希望有一种技术, 将静态网页的优势移植到动态网页上, 于是: 伪静态技术就诞生了
3. 伪静态的实现
- 伪静态的本质, 是通过重写动态的URL地址, 去掉问号等字符,使URL地址在搜索引擎面前看上去像是一个静态地址
- Apache服务器, 实现伪静态的功能非常强大, 并且配置也非常的简单
- Apache是通过启动rewrite(重写)模块来实现伪静态的
4. Apache伪静态
4.1 更新Apache配置文件
- httpd.conf: 启用rewrite模块,LoadModule rewrite_module modules/mod_rewrite.so
- vhost.conf: 更新AllowOverride None, 改为 AllowOverride All
4.2 .htaccess
如果你没有修改服务器配置的权限, 可以在需要URL重写的目录创建一个.htaccess文档
下面是一个简单的小案例, 我们在浏览器地址栏输入: index.html, 实际上访问的是动态页面index.php
代码语言:javascript复制# 启动rewrite引擎
RewriteEngine on
# 将index.html 映射到 index.php
RewriteRule ^index.html$ /index.php
ThinkPHP5.1的.htaccess
<IfModule mod_rewrite.c>
# 符号链接,也称为符号链接或软链接, 最类似于Windows快捷方式, 没它可能403错误
Options FollowSymlinks -Multiviews
RewriteEngine On
# 如果不是目录, 如果不是文件, 才将URL交给下一条规则处理
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>