美文网首页
Nginx 伪静态简单配置

Nginx 伪静态简单配置

作者: 十年磨一剑1111 | 来源:发表于2020-09-21 16:50 被阅读0次

    通常,我们在美化或者希望能更好的兼容搜索引擎的时候我们常常使用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文件

    <?php
    $id = isset($_GET['id']) ?$_GET['id']:0 ;
    echo '获取的id值为:'.$id;
    

    原本的访问链接:http://w.myblog.com/api/php/test.php?id=1,我们访问看下:

    图片.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来访问下,

    图片.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;
     }
    ...
    

    解析php的那段避免累赘,这里就不再写上了。
    我们访问看下:http://w.myblog.com/api/php/test-4.html

    图片.png
    发现可以正常访问,那笔者再创建一个其他的文件test001.php进行测试下:
    图片.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:表示参数.
    加上配置后我们再来访问下:


    图片.png

    发现可以正常访问了。需要注意的是:如果不写s=xxx,配置会不生效。
    好了,本篇文章就到这里了,有需要补充的小伙伴欢迎在下面给我留言哦,看到会及时回复的。

    相关文章

      网友评论

          本文标题:Nginx 伪静态简单配置

          本文链接:https://www.haomeiwen.com/subject/epyvyktx.html