实现的友好的urls,固然很好,但是有些场合因为服务器的原因等,我们无法使用重写规则,特别是当我们用CakePHP开发应用产品的时候,必须 考虑到用户不同的部署环境,所以必须考虑到不用urls重写,网站的链接地址方式。CakePHP的官方文档等默认的都是支持Url重写,强调一个约定环 境,约定目录,而实际生产环境于此不同,又不受控制。笔者在用CakePHP开发一个应用,部署时发现环境不支持Url重写,不得不回过头来修改代码,将 其中遇到的问题,发现这方面的资料很少,所以总结了一下,与大家一起探讨。

实际链接地址

/index.php?url=controllername/actionname/param,调试时常常用到

要实现不同环境的部署,网站的所有链接地址要使用Helper的HTML助手的link、url方法,不要直接写地址,这是刚开使用框架是最容易忽略的问题,等程序开发完了,再回来修改,还是很费精力的。

不支持url重写的配置

/app/config/core.php取消对其注释

Configure::write('App.baseUrl', env('SCRIPT_NAME'));

删除

/.htaccess
/app/.htaccess
/app/webroot/.htaccess

链接地址由 www.example.com/controllername/actionname/para 变为
www.example.com/index.php/controllername/actionname/param

问题:
www.example.com/index.php/controllername/actionname/param的模式会报告404错误,无法找到文件,修改为index.php?controllername/actionname/param可以实现访问,那 么实现 index.php/controllername访问,是需要配置web服务器、PHP、CakePHP,还是就是CakePHP bug,应该生成的是index.php?controllername,官方文档没有发现有关此的任何信息,像是这个问题根本就不存在一样,这不是个问 题吗?我对Url,参数传递知道的太少了吗?都是用?传递参数,搜索了也没有找到想要的说明。(后来试验发现,Apache可以使用/传递参数可以实现访问,我这里用的是IIS5.0服务器),所以CakePHP对于IIS的支持存在bug,跟踪html->url()方法:
cake/libs/router.php第857行,将

$output = str_replace('//', '/', $base . '/' . $output);

修改为

$output = str_replace('//', '/', $base . '?' . $output);

目录设置问题

├─web_root 根目录
│ └─应用目录
│
├─应用目录
│ └─app 应用目录
└─cake cake目录

按文档进行配置webroot/应用目录/index.php

if (!defined('ROOT')) {
define('ROOT', dirname(dirname(dirname(__FILE__))).DS.'应用目录');
}
if (!defined('APP_DIR')) {
define('APP_DIR', 'app');
}

问题:CSS、img等路径出现问题,页面无法正常访问
跟踪源码,这里设置
cake/dispatcher.php

if (strpos($this->webroot, $dir) === false) {$this->webroot .= $dir . '/' ;//$dir=APP_DIR
}

解决:
去掉应用目录的app层,修改

if (!defined('APP_DIR')) {define('APP_DIR', '/');
}

转载于:https://www.cnblogs.com/hunchun/p/3727066.html

CakePHP:链接地址问题(不用mod_rewrite,IIS)相关推荐

  1. UIWebView / NSURL / NSBoundle 相关应用 (实例,加载完成前的背景, 默认safari打开链接地址等)...

    UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦.是不是觉得很棒呢?废话少说,切入正题. 一.创建UIWebView CGRect bouds = [[ ...

  2. html怎么给表格加a链接地址,html基础02-图片标签、绝/相对地址、表格的属性、链接的属性及链接的分类、name定义锚点的名称、编码...

    图片标签(单标签 ,行内块标签) 图片的语法: 图片的属性 l 图片的路径 src="图片的地址"(1.网上url 2.本地的绝对地址 3.本地的相对地址) l 图片的宽度 wid ...

  3. java 新浪短链接_java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java | 学步园...

    仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java String sLongUrl = "http://www.zuidaima.com/share/1550463 ...

  4. java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java

    原文:仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java 源代码下载地址:http://www.zuidaima.com/share/1550463378934784.htm ...

  5. 如何获取音乐链接地址

    http://blog.csdn.net/pipisorry/article/details/50389634 lz亲试,各类网站的音频皆可下载 操作步骤 chrome浏览器(firefox,360, ...

  6. 获取微信推文的实际链接地址(包含JSON数据以及推文msg_data_id)

    前提: 现在随着公众平台的要求越来越多,搜狗微信的爬虫难度越来越高,很多爬虫都没有用了,但是现在很多业务还是要用到历史推文的一些数据,其实很多数据(阅读量.点赞数.封面图片地址.标题.简介)都可以用过 ...

  7. php网页中出现问号,HTML_地址栏中的问号有什么作用,之前我们曾经解释?过链接地址 - phpStudy...

    地址栏中的问号有什么作用 之前我们曾经解释?过链接地址中CSS和JS后带的问号是做什么的,但一些同学同样发现浏览器地址栏中的URL链接也经常会带问号. 比如这样的链接: http://www.xxx. ...

  8. 记一次获取QQ音乐播放源链接地址

    目标链接: https://y.qq.com/portal/playe... 分析network 发现一个请求: 双击打开发现就是歌曲播放源地址 紫棋小姐姐唱歌真好听~ 记住这个链接,并且多打开几个试 ...

  9. 用批处理整理百度MP3上歌曲排行榜MP3及LRC文件的批量下载链接地址(含图文教程)

    http://bbs.wuyou.com/viewthread.php?tid=192322 本文结构如下: 一.缘起:问题的提出 二.试探:徒劳而返 三.峰回路转:芝麻!开门! 四.万事俱备:xml ...

最新文章

  1. 微信小程序-设置启动页面
  2. NLP技术中的Tokenization
  3. Flask Web 开发 错误页面自定义
  4. Struts2中使用OGNL表达式投影(过滤)集合
  5. python怎样把两个图画到一起_python实现两张图片拼接为一张图片并保存
  6. C++/Java线程之分
  7. nginx学习笔记003---Nginx代理配置_注意,在Windows中路径要用/
  8. 计算机三级之嵌入式系统学习笔记4
  9. ui分离的进程 如何查找窗口句柄_如何使用 Linux screen
  10. 是指直接进行国际联网的计算机信息网络,网络安全合规指引题库:计算机信息网络直接进行国际联网,可以使用邮电部国家公用电信网提供的国际出入口信道。单位和个人也可以自行建立信道进行国际联网。()...
  11. WIN7无法被远程桌面问题
  12. android多点触控参数,转 android 下的webview 设置多点触控放大
  13. RunC漏洞导致容器逃逸(CVE-2021-30465)
  14. 澳拳击袋鼠体型巨大 身高超2米体重近200斤
  15. ObjectARX开发笔记(一)——分别使用AcEdInputPointFilter和AcEdInputPointMonitor实现光标提示功能
  16. 第7章第21节:双图排版:两张图片左右并列排版 [PowerPoint精美幻灯片实战教程]
  17. [ctfshow]web入门——文件上传(web156-web163)
  18. 使用matlab分析一段声音信号的均方根
  19. MxNet系列——how_to——multi_devices
  20. python参考书推荐--父与子的编程之旅

热门文章

  1. 怎样把任意exe程序注册成windows系统服务(手动注册服务)
  2. 监控三个指标 并不代表你能监控Tuxedo
  3. web.xml 配置 contextConfigLocation
  4. 在Linux上安装ant环境
  5. 创建对象、原型、原型链
  6. 关于Cocos2d-x中自定义的调用注意事项
  7. MYSQL 删除二进制日志的 3 个方法
  8. .Net Micro Framework研究—串口操作
  9. Part 4 —— Go 模块:v2 及更高版本
  10. web前端开发初学者十问集锦(1)