当前位置: 首页 > news >正文

佛山英文网建站分类达人介绍

佛山英文网建站,分类达人介绍,营销策划好的网站,泰安高新区人才招聘网前言 在开发项目时#xff0c;我面临一个需求#xff1a;区分移动端和桌面端访问路径。移动端访问应在路径前加上/m/#xff0c;而桌面端则不需要。例如#xff1a; 移动端: 域名/m/路由地址桌面端: 域名/路由地址 这种设计在路由规则上带来了一定的重复#xff0c;因为…前言 在开发项目时我面临一个需求区分移动端和桌面端访问路径。移动端访问应在路径前加上/m/而桌面端则不需要。例如 移动端: 域名/m/路由地址桌面端: 域名/路由地址 这种设计在路由规则上带来了一定的重复因为相同的处理逻辑需要为两种不同的路径配置。例如原始PHP路由配置如下 # 不加上m写一次规则 Route::get(/register, Auth\RegisterControllershowRegistrationForm); # 加上m写一次规则 Route::get(/m/register, Auth\RegisterControllershowRegistrationForm);这导致代码重复为了解决这个问题我决定通过Nginx的地址重写功能来优化。 Nginx 配置 我在Nginx配置文件中添加了以下规则以实现地址重写 server {listen 93;server_name localhost;root F:/project/work/gameWeb/public/;location /m/ {rewrite ^/m/(.*)$ /$1 last; }location / {index index.php index.html error/index.html;try_files $uri $uri/ /index.php$is_args$args;autoindex off;}location ~ \.php(.*)$ {fastcgi_pass 127.0.0.1:9002;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;fastcgi_param REQUEST_URI $request_uri;} } 尽管Nginx重写规则看似有效但最终仍返回了Laravel的404页面说明路由匹配失败。 结论与解决方案 问题出在以下这行配置 fastcgi_param REQUEST_URI $request_uri;在PHP中$_SERVER[‘REQUEST_URI’] 获取的是重写前的URL而不是重写后的。意味着即使URL被重写为不含 /m/ 的路径REQUEST_URI 仍然包含 /m/。 为了验证这一点我将上述行修改为 fastcgi_param REQUEST_URI /register;这样访问 域名/m/register 时路由规则能成功匹配到 Route::get(/register, Auth\RegisterControllershowRegistrationForm);这表明Laravel的路由匹配实际上是依赖于 REQUEST_URI 的值。因此要解决这个问题我觉得不是在于Nginx规则要改写REQUEST_URI因为这会影响所有的项目。 最终解决方案 在 app\Providers\RouteServiceProvider.php 的代码文件中修改boot方法 通过加入前缀路由的方式来去除/m/带来的404问题 public function boot(){$this-configureRateLimiting();$this-routes(function () {Route::prefix(api)-middleware(api)-namespace($this-namespace)-group(base_path(routes/api.php));Route::middleware(web)-namespace($this-namespace)-group(base_path(routes/web.php));// 不加m的路由Route::namespace(App\User\Controller)-group(base_path(routes/user.php));// 加了m的路由将m视为前缀Route::prefix(m)-namespace(App\User\Controller)-group(base_path(routes/user.php));});}补充知识点 框架 laravel/yii2 使用 $_SERVER[‘request_uri’] 中的路径做路由解析不受rewrite影响 框架 thinkphp 使用 $_SERVER[‘path_info’] 中的路径做路由解析受rewrite影响 两者最大的不同在于nginx的rewrite重写后获取到的路径是截然不同的 在 URL 重写Rewrite后的差异 REQUEST_URI 变化当使用 URL 重写如在 Apache 的 .htaccess 或 Nginx 的 rewrite 规则时REQUEST_URI 通常会保持不变反映原始请求的 URI。PATH_INFO 变化PATH_INFO 可能会受到 URL 重写的影响。如果 URL 被重写到一个特定的脚本PATH_INFO 可能会反映重写后的路径。 所以 thinkphp采用nignx的rewrite重写来实现去除/m/的影响理论上可行 但是laravel、YII则不能使用这种方案 这里博主没有去进行测试了 这篇文章可以看看https://segmentfault.com/a/1190000022499679#item-8
http://www.pierceye.com/news/286773/

相关文章:

  • 天津网站建设学习电子商务企业网站建设实训报告
  • 怎么让网站收录在google怎么免费安装wordpress主题
  • 在windows2003上做网站浙江网
  • 宣威网站wordpress把logo变大
  • 网站设计模式有哪些商城网站营销方案
  • mvc做的网站wordpress 新建php文件
  • 西安网站seo外包个人开发者
  • 注册网站需要visa怎么办济宁万达网站建设
  • niche网站建设wordpress安装文本编辑器
  • 网站建设三种方法免费的导航页
  • 微信到wordpress杭州网站怎么做seo
  • 沙田镇仿做网站网站加速器quickq
  • 武进网站建设医药公司网站建设
  • 专业做网站建设广告设计网站素材
  • 成都建设银行保安招聘网站深圳做兼职的网站设计
  • 做网站如何找广告商湖南网站建设kaodezhu
  • 宁波专业的网站搭建公司天津网站建设技术托管
  • 做水果网站特点分析报告怎样在百度上注册自己的公司
  • 800元五合一建站上海企业排行榜
  • 学校建设网站前的市场分析上海到北京火车时刻表查询
  • 科技企业网站设计网站开发费如何入账
  • 网站主体必须要与域名注册人相同网页设计尺寸标准
  • wordpress建淘宝客网站吗网站建设与维护技术浅谈论文
  • 网站建设 技术方案网站建设的指导书
  • ps网站首页怎么做google 浏览器
  • 网站建设数据库软件制作公司宣传片哪家好
  • 高端建站模版大兴模版网站建设哪家好
  • 帝国cms怎样做网站迁移西安网站设计公司排名
  • 网站建设三折页做僾网站
  • 长沙的网站建设公司上海做网站的哪家好