一、为什么需要伪静态
网页的url地址在不同的网站中采用的方式会有所不同。一般情况我们的URL是这样的:`http://www.abc.com/index.php?module=article&id=10` ,这种方式我称之为拉式传递(传递参数的方式),当访问网站时,有一个php文件接收你传递的参数,然后去数据库中取回数据,再把一个页面返回给浏览器。
然而,这种方式的URL不利于SEO的优化,也让人看起来很不舒服。而伪静态能够处理这个问题,使得我们的URL地址看起来更加美观。
二、thinkphp伪静态
1. 开启伪静态
首先,在thinkphp的应用中开启伪静态,需要在应用的配置文件中开启,打开文件位于`application/config.php`,将`url_html_suffix`配置项的值设置为`.html`:
```php
'view_replace_str' => [
'__PUBLIC__'=>'/public',
'__STATIC__'=> '/static',
],
'url_html_suffix' => 'html',
```
这样,你的URL就会变成:
2. 配置伪静态规则
接下来,你需要在服务器上对你的伪静态做出相应的配置。以nginx为例,我们需要在nginx的配置文件中添加相关配置,修改站点的配置文件中,增加以下内容即可:
```nginx
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=/$1 last;
break;
}
}
```
这一段配置来自于ThinkPHP官方手册。请仔细阅读并理解其含义。
3. 完整的配置代码
nginx服务器的完整配置代码如下:
```nginx
server {
listen 80;
server_name www.abc.com;
error_log /data/logs/nginx/abc.com-error.log;
root /data/wwwroot/abc.com/public;
index index.html index.php;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=/$1 last;
break;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log /data/logs/nginx/abc.com-access.log;
}
```
四、总结
在本文中,我们了解到了为什么需要使用伪静态,以及ThinkPHP中如何开启伪静态,以及如何在服务器中具体配置。希望对大家有所帮助。