CakePHP项目中的绝对路径

CakePHP项目中的绝对路径,php,cakephp,Php,Cakephp,我得到了一个相当大的cakePHP(建立在v.1.3.10)项目来维护。问题是大多数路径是绝对的(我认为这是一个坏习惯) 例如,在default.ctp中有: 但在同一文件的底部有: 打印正确的路径 这就像最初的开发人员将站点放在服务器的根目录(而不是子目录)中一样 我试图解决这个问题但没有成功: 修改了/、app/和app/webroot上的.htaccess文件 添加标记 我知道我可以在每个路径的开头添加一个$this->base,但这不是一个解决方案,因为有数千个文件需要修改:(

我得到了一个相当大的cakePHP(建立在v.
1.3.10
)项目来维护。问题是大多数路径是绝对的(我认为这是一个坏习惯)

例如,在default.ctp中有:

但在同一文件的底部有:

打印正确的路径

这就像最初的开发人员将站点放在服务器的根目录(而不是子目录)中一样

我试图解决这个问题但没有成功:

  • 修改了/、app/和app/webroot上的.htaccess文件
  • 添加标记
我知道我可以在每个路径的开头添加一个
$this->base
,但这不是一个解决方案,因为有数千个文件需要修改:(

所以我的问题是:有没有使用mod_rewrite之类的解决方案

提前感谢。

$html->script()
将自动在html输出中添加
/js/
。Cake的.htaccess随后将这些文件调用指向
/webroot/js/

因此,
将输出


/js/jquery-ui-1.8.16.custom.min.js
在HTML中。

要替换所有这些URL/链接,实际上可以使用实际搜索和替换之类的程序;-)我经常使用它。

解决方案:

在app/config/boostrap.php上,添加:

Configure::write('App.base','/teka_new/')


尽管使用内置的HtmlHelper是更好的做法,但我还是从

中得出了这个结论,使用
/css/something的“基本路径”。css
不应该是一个很大的障碍,因为它将指向应用程序的webroot/,而不是“服务器的根”。除非您计划将
css
文件夹移到
webroot/
之外,否则它应该可以正常工作,而无需修改任何内容。正如Dave提到的,使用HtmlHelper是最好的方法。只是想添加一条关于“坏习惯”的评论;使用CakePHP时,最好使用绝对路径。相对路径将导致出现问题,因为浏览器将尝试相对于当前路径定位CSS。例如当使用
css/main.css
时,浏览器将尝试在
/mycontroller/myaction/1234/css/main.css
中查找样式表,这显然会导致404错误。我所说的良好做法是路径不应该硬编码,而是以Router::url(“/path/to/file”)的形式