我在子文件夹中安装了一个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文件。
答案 0 :(得分:2)
最佳解决方案是在您的应用程序中set a BaseUrl。如果您在.htaccess中设置RewriteBase,则应自动检测到此项。路由器和其他组件了解此设置,并可生成适当的链接。
有一个view helper可以更轻松地链接资产。
或者,您可以使用文档头中的标记修复这些链接。
<html>
<head>
<base href="http://www.mydomain.com/temp/zend-application/">
</head>
答案 1 :(得分:0)
我绝对会将baseUrl()视图助手预先添加到CSS和JS的路径中。