为什么配置伪静态?

1.伪静态通过URL重写隐藏应用的入口文件index.php和实际路径,会减少些许安全问题。

2.配置伪静态重写URL后,可以使得URL链接更加优美,否则会有太多的[/&?]等带参字符,使得路径凌乱,在拼接一些跳转逻辑时也会很繁琐。


为什么配置跨域?

为什么给你设置重重障碍?讲一讲Web开发中的跨域


跨域问题可以在PHP代码或Nginx/Apache中解决,在这里我们统一使用HTTP Server的配置来解决。


在PHP代码中无法解决一些静态资源的跨域问题,例如我们的海报生成是在前端使用Canvas组合绘制的,如果只在PHP代码中加入header跨域设置,图片这些静态资源是不走PHP的响应层的,Canvas下载这些图片资源也会提醒跨域问题导致图片无法组合。


nginx 伪静态/跨域配置

修改配置文件 /application/config.php 文件 fastadmin 配置项下的选项 cors_request_domain(如果没有,请自行在 fastadmin 配置项下面自行添加)


//允许跨域的域名,多个以,分隔

'cors_request_domain'   => 'localhost,127.0.0.1,您的 h5 域名(无需携带http和端口号)'

//如果暂时无法确认您的跨域域名 可简单使用通配符来囊括所有域名

'cors_request_domain'   => '*'



配置伪静态/图片跨域

因为前端 h5 生成海报需要下载图片,这里仍然需要配置静态资源跨域,宝塔后台找到shop.域名的位置,点击设置---伪静态---然后添加nginx 配置代码即可,如下图:

image.png


nginx 配置代码:

location / {

  if (!-e $request_filename){

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

  }

}


location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {

  #允许静态资源跨域请求

  add_header 'Access-Control-Allow-Origin' '*';

  add_header 'Access-Control-Allow-Credentials' 'true';

  add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';

  add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, token, platform';

  expires 30d;

  access_log off;

}