nginx php怎么配置伪静态,Nginx 伪静态简单配置

通常,我们在美化或者希望能更好的兼容搜索引擎的时候我们常常使用nginx的rewrite模块来实现,例如:我们希望原本的访问链接xxxx.com/xx/xx/xx.php?id=12,变成这种:xxx.com/xx/xx/12.html;又或者是原本的访问链接太长,我们希望能够简洁一点等等吧,下面我将针对这两种情况来做配置。

1. 实践

(1) 页面伪静态

将xxxx.com/xx/xx/xx.php?id=12这种访问链接变成xxx.com/xx/xx/12.html这种

下面笔者在本地的网站目录下创建一个test.php文件

$id = isset($_GET['id']) ?$_GET['id']:0 ;

echo '获取的id值为:'.$id;

11d4b09aae33

图片.png

访问正常。

下面我们希望这个访问链接变成http://w.myblog.com/api/php/1.html.

...

location /api {

rewrite php/(\d+)\.html$ /api/php/test.php?id=$1;

}

location ~ \.php(.*)$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

include fastcgi_params;

}

需要注意的是:rewrite 完后不能写break,否则php文件无法解析。

我们使用链接:http://w.myblog.com/api/php/1.html来访问下,

11d4b09aae33

图片.png

发现可以配置成功了,但是小伙伴们可能会想这样配置可能不够灵活,比如php目录下有多个php文件呢,并且这些文件也需要传递参数。那针对这种情况,我们可以获取到对应的文件名称,不同的文件使用它对应的文件名称进行访问。类型这种:http://w.myblog.com/api/php/test-1.html,其中test是文件对于的文件名称,1 是需要传递的参数。那我们改下之前的配置:

...

location /api {

rewrite php/(.+)-(\d+)\.html$ /api/php/$1.php?id=$2;

}

...

11d4b09aae33

图片.png

发现可以正常访问,那笔者再创建一个其他的文件test001.php进行测试下:

11d4b09aae33

图片.png

发现也可以访问成功。说明配置成功了。

(2) 简化访问路径

使用过tp的或者其他一些类型的php框架小伙伴们我们在访问方法时需要这样访问:http://w.tp5.com/index.php/index/index/info,这个表示访问index模块的index控制器中的info方法,但是这么访问不太方便,我们希望去掉index.php,直接使用http://w.tp5.com/index/index/info访问,那我们就需要配置下nginx,做一个rewrite.

if (!-e $request_filename){

rewrite ^/(.*)$ /index.php?s=/$1 last;

}

这段配置的意思是:当访问的文件或者目录不存在时,重定向到某个php文件.

!-e 意思是:-e和!-e用来判断是否存在文件或目录。

last: 相当于apache里面的[L]标记,表示rewrite.

s:表示参数.

加上配置后我们再来访问下:

11d4b09aae33

图片.png

发现可以正常访问了。需要注意的是:如果不写s=xxx,配置会不生效。

好了,本篇文章就到这里了,有需要补充的小伙伴欢迎在下面给我留言哦,看到会及时回复的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值