Zend Framework在一个子文件夹中

时间:2009-10-11 14:39:44

标签: zend-framework .htaccess

我在子文件夹中安装了一个Zend Framework应用程序,如下所示:

www.mydomain.com/temp/zend-application/

现在问题是所有样式表,javascript文件以及所有链接都使用相对路径,例如:

/css/styles.css
/js/jquery.js
/controller/action

这些就像这样进入主域:

www.mydomain.com/css/styles.css
www.mydomain.com/js/jquery.js
www.mydomain.com/controller/action

那么如何让它在该子文件夹中工作?

我的.htacces文件现在看起来像这样:

RewriteEngine On

# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]
编辑:我已经通过使用前端控制器的setBaseUrl()方法解决了这个问题。现在问题是如何编辑我的.htaccess文件。

2 个答案:

答案 0 :(得分:2)

最佳解决方案是在您的应用程序中set a BaseUrl。如果您在.htaccess中设置RewriteBase,则应自动检测到此项。路由器和其他组件了解此设置,并可生成适当的链接。

有一个view helper可以更轻松地链接资产。

或者,您可以使用文档头中的标记修复这些链接。

<html>
<head>
<base href="http://www.mydomain.com/temp/zend-application/">
</head>

进一步阅读http://www.w3schools.com/TAGS/tag_base.asp

答案 1 :(得分:0)

我绝对会将baseUrl()视图助手预先添加到CSS和JS的路径中。