从小白进阶,三分钟教你如何编写伪静态实现网站页面响应 荐

栏目: 服务器 · Nginx · 发布时间: 6年前

  从小白进阶,三分钟教你如何编写伪静态实现网站页面响应

伪静态简介:

伪静态是相对真实静态来讲的。伪静态并不是真正的静态,实质上也是动态页面。伪静态有何作用:伪静态页面,其目的是为了更好的被搜索引擎收录而通过一定的规则,把动态页面的地址转换成以 htm html 结尾的地址,看起来是静态的,实际是依然是动态页面。

既然这样,那我们还为啥要采用伪静态来响应我们的页面呢。首先我们采用的伪静态最主要的目的是方便搜索引擎蜘蛛 (Spider) 来抓取网页上的相关内容;接着是因为在影响网站在搜索引擎的排名中,有很重要的一条是网页静态化,很多朋友在研究 SEO 的时候,因为有些技术原因,伪静态成了最大的门槛;最后不得不说的是,使用伪静态还能提高用户对网页的信任度。

公司案例:

因为公司的的服务器快过期了(性能不咋样),也不打算继续续费了,所以打算把服务器里面的 web 服务迁移到新的公司服务器上,在旧的服务器上,只有一个 web 的网站,而且是用 apache+php 架构的,现在转到新的服务器上,并使用 nginx+php 架构实现新的网站部署。费了几波周折之后总算是可以访问页面的,但是访问 index.php 的其他连接,发现直接出现 404 错误, No input file specified 的页面。

一、案例分析:

Web 服务迁移,首先我们想到的是域名配置, web 目录指向, php 端口指向。首先对于 web 的迁移,我们只要创建一个虚拟机就可以了,重新更改 web 项目的配置文件(如 .env conf.php 文件),比如 web 的新的路径,还有 mysql 的路径指定等等。 至于在 inde.php 的页面里面的跳转,出现的错误页面问题,我们可以想到的是页面跳转,而找不到的这个页面,导致出现页面访问不了,我们可以很快的发现问题的所在是 nginx 的伪静态问题了 。解决这个问题,我们就可以完成了,整个网站的转移了。

二、 web 服务的迁移

1 、部署 lnmp 环境。

我这里使用 oneinstack 来安装的,很方便的一个键源码安装工具,工具使用可参考 参考官网: https://oneinstack.com/install/

2 、网站数据,数据库数据转移

1 )网站数据转移

首先这个需要,我们查看原来的 apache 的虚拟主机中所定义的,域名网站的目录指向哪里,然后把目录下的文件复制到新服务器的 /data/wwwroot ( 这里是使用 oneinstack 安装的所以 /data/wwwroot 默认定义为网站代码的路径 )

#scp  /var/www/abc  root@ 新主机的 ip:/data/wwwroot 

2) mysql 数据的转移

直接备份网站数据库的数据

#Mysqldump -uroot -ppassword  --databases  abc( 你网站所用的数据库名字 )  >  /tmp/database.sql

database.sql 复制到新服务器上

# scp  /tmp/database.sql  root@ 新主机的 ip:/tmp/ 

3) 、数据恢复,实现网站的 index ,访问。

我们到新的服务上,数据恢复

 #mysql –uroot –ppassword
 Mysql>source /tmp/database.sql

创建 web 连接 mysql 的用户

Mysql> GRANT  ALL  ON  www(web 的数据库 ).* TO 'www( 以前 web 的用户名 )'@'%' IDENTIFIED BY '123456';

4 )、修改 web 项目的定义文件,实现 index 页面的正常访问。

web 的项目中,会有一些 web 的定义文件,比如 confp.php. .env ,修改相关的参数就可以

接下来,创建个虚拟主机就可以。

#mkdir /use/local/nginx/config/vhost
#vim abc.com.conf

我的一个虚拟主机配置如下,当然啦域名,我改了

从小白进阶,三分钟教你如何编写伪静态实现网站页面响应 荐

三、伪静态规则编写,实现页面的正常跳转。

问题出现

当我访问页面的时候,很快就可以,访问到 index.php 的页面,于是我就想,网站搭建完毕了,准备收工了,基于好奇,看一下网页里面的内容啦,突然间,浏览器给我一个“惊喜 出现了一个 404 网页不存,这时一脸懵 B ,没有遇到这种情况的我,还是无从下手呢。

从小白进阶,三分钟教你如何编写伪静态实现网站页面响应 荐

经过一波三折,我才了解到,出现这种情况是网站的页面跳转异常,因为该页面不存在,才出现这个 404 错误;所以这就是一个 伪静态 配置问题。而这个伪静态需要我们在 nginx 文件配置。

处理思路

首先,出现这种情况,已经发现,该 web 项目是采用伪静态实现页面的跳转的。所以,我们就可以知道该 web 项目的有伪静态的配置,而一般来说都会把伪静态规则写的 .htaccessd 的文件里面 但是, nginx 是识别不了,而不能正常的跳转,接下来我们来一起看看,如何实现一步步伪静态编写,实现页面的正常访问吧。

伪静态处理:

首先我们需要找到 .htaccessd   然后,我们在 web www.acb.com.conf 的把文件指向该文件就可以了 .htaccessd 记录的该 web 项目的所有规则。

.htaccessd 是一个隐藏文件,一般是放在 web 项目的根目录下。

思路一

百度一下,看别人说,直接把 .htaccessd 文件 定义到虚拟主机就可以了。

进入虚拟主机:

#vim /usr/local/nginx/conf/vhost/ abc.com.conf

# server{} 下添加一个 location

location / {
            include /data/wwwroot/www.abc.com/pub_html/code/.htaccessd;
        }

重新加载 nginx

#service nginx reload

Redirecting to /bin/systemctl reload nginx.service

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

证明我们的这样写是不行的。

继续解决这个问题。

思路二

.htaccessd 文件的含有 RewriteRule 的内容复制到我们定义的 location 里面,并做修改。

查看一下原来的规则,我列出一小部分

RewriteRule ^tegory-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$                                                       tegory\.php\?id=$1&brand=$2&page=$3  [QSA,L]
RewriteRule ^tegory-([0-9]+)-b([0-9]+)(.*)\.html$                                                                tegory\.php\?id=$1&brand=$2  [QSA,L]
RewriteRule ^tegory-([0-9]+)(.*)\.html$                                                                          tegory\.php\?id=$1  [QSA,L]
RewriteRule ^ticle_cat-([0-9]+)-([0-9]+)(.*)\.html$                   ticle_cat\.php\?id=$1&page=$2   [QSA,L]
RewriteRule ^ticle_cat-([0-9]+)(.*)\.html$                           ticle_cat\.php\?id=$1   [QSA,L]

我们可以从上面的伪静态规则里面可以看到,有很多的正则,那我们该如何把这些伪静态规则复制到虚拟主机中,并做修改了。

首先我们要知道的是:

第一 nginx 配置文件,不支持 \ , 所复制过去的规则不应该存在 \ ,

第二 RewriteRule 不识别,只能识别 rewrite

第三 :所以匹配标题需要添加 / 来指定访问文件,比如 ^ticle_cat 重写后是这样 ^/ticle_cat

第四 :需要在结尾上加 last; 定义伪静态。

接下来,我们添加伪静态规则:

#vim /usr/local/nginx/conf/vhost/
abc.com.conf

# server{} 下添加一个 location

location / {
            rewrite ^/tegory-([0-9]+)-b([0-9]+)-([0-9]+)(.*).html$ /tegory.php?id=$1&brand=$2&page=$3 last;
rewrite ^/tegory-([0-9]+)-b([0-9]+)(.*).html$  /tegory.php?id=$1&brand=$2 last;
rewrite ^/tegory-([0-9]+)(.*).html$ /tegory.php?id=$1 last;
rewrite ^/ticle_cat-([0-9]+)(.*).html$ /ticle_cat.php?id=$1 last;
rewrite ^/ticle-([0-9]+)(.*).html$ /ticle.php?id=$1 last;
. . . . . . .
        }

重新加载 nginx

# service nginx reload

Redirecting to /bin/systemctl reload nginx.service

发现启动没问题:

重新访问页面,发现大部分都是可以访问成功,有一些还是不行。

思路三

为什么,还有一两个页面,还是访问不了,思考了一下原因,伪静态匹配的不正确。解决办法就是,找到那个页面的伪静态文件,重新匹配。

解决办法:

首先,找到伪静态不存在的页面,比如 www.abc.com/tegory-702-a0-bale.html 页面出错,我们改如何解决呢。

出现某个页面的跳转不正确,证明我们写的伪静态不对。

如果我们不太懂正则匹配,百度搜索:在线正则匹配就有了:或者这个 http://tool.oschina.net/regex/

我们把该对应的伪静态复制上去并匹配,

从小白进阶,三分钟教你如何编写伪静态实现网站页面响应 荐

接下来我们,把还有跳转不了的伪静态页面所对应的规则,一条一条在线匹配,就可以了。

四、总结

个人来说,由于不熟悉伪静态的概念,为了处理这个问题,找了很多方法,也尝试各种匹配,虽然用时比较久,但是可幸的是,问题已经解决了;获益良多。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器学习系统设计

机器学习系统设计

[德] Willi Richert、Luis Pedro Coelho / 刘峰 / 人民邮电出版社 / 2014-7-1 / CNY 49.00

如今,机器学习正在互联网上下掀起热潮,而Python则是非常适合开发机器学习系统的一门优秀语言。作为动态语言,它支持快速探索和实验,并且针对Python的机器学习算法库的数量也与日俱增。本书最大的特色,就是结合实例分析教会读者如何通过机器学习解决实际问题。 本书将向读者展示如何从原始数据中发现模式,首先从Python与机器学习的关系讲起,再介绍一些库,然后就开始基于数据集进行比较正式的项目开......一起来看看 《机器学习系统设计》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具