投稿 评论 顶部

Nginx如何配置ThinkPHP5以及Laravel伪静态

佚名 网络安全

? ? ? ? 在如今的网站设计制作中,有很多客户都会要求我们把网站的页面做成伪静态化的。何为网页伪静态呢?网页伪静态其实就是指将动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。? ? ? ? ? ? ? ? ? ? ? ? ? ? 有时候,我们为了更好的缓解服务器压力和增强对搜索引擎的友好,都经常将文章内容生成静态页面。但是有的为了实时的显示一些信息,或者还想运用动态脚本解决一些问题,不能用静态的方式来展示网站内容的时候该怎么样在两者之间找个中间方法去解决呢?这也就产生了“网页伪静态技术”。

那么网页做成伪静态的优点有哪些?
1.最主要的就是为了搜索引擎方便搜索引擎蜘蛛(Spider)来抓取网页上的相关内容;
2.影响网站在搜索引擎的排名中,有很重要的一条是网页静态化,很多朋友在研究SEO的时候,因为有些技术原因,伪静态成了最大的门槛;
3.提高用户对网页的信任度;

nginx下伪静态的配置:

由于ThinkPHP和Laravel都是单一入口模式,所以前台进行任何动态操作都需要访问index.php这个入口文件来进行请求转发。所以我们会看到用这些框架开发出来的网站,url连接会是http://doman.com/index.php?s=/index/index/index 或者?http://doman.com/index.php/index/index/index。如果不配置nginx或者Apache服务器而直接去掉这个index.php的话系统会报错。那么nginx要怎么配置呢?只需要如下配置即可:

laravel:

server {        listen       80;		#listen      443 ssl;        server_name  127.0.0.1 test.laravel.com;		#ssl_certificate                      D:/phpApp/UPUPW_NP7.2_64/UPUPW_NP7.2_64/Nginx/sslroot/cert.pem;        #ssl_certificate_key          D:/phpApp/UPUPW_NP7.2_64/UPUPW_NP7.2_64/Nginx/sslroot/cert.key;        #include ssl.conf;        #error_page 497  https://$host$uri?$args;        #if ($ssl_protocol = '') {return 301 https://$host$request_uri;}        location / {            root   D:/phpApp/laravel/public;            try_files $uri $uri/ /index.php?$args;  #去掉index.php            index  index.html index.htm default.html default.htm index.php default.php app.php u.php;			include        D:/phpApp/UPUPW_NP7.2_64/UPUPW_NP7.2_64/htdocs/up-*.conf;        }		autoindex off;		include advanced_settings.conf;		#include expires.conf;		location ~* .*\/(attachment|attachments|uploadfiles)\/.*\.(php|php5|php7|phps|asp|aspx|jsp)$ {        deny all;        }        location ~ ^.+\.php {            root           D:/phpApp/laravel/public;            fastcgi_pass   bakend;            fastcgi_index  index.php;			fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;			fastcgi_param  PATH_INFO $fastcgi_path_info;			fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;            include        fastcgi.conf;        }		}

ThinkPHP5:

thinkphp5的配置只需要在location / {? } 内加上如下代码就可以了。

if (!-e $request_filename) {       rewrite ^(.*)$ /index.php?s=$1 last;       break;        }

配置正确的话,这时候我们就能成功访问了: