在我的.htaccess
文件中,我将所有请求重定向到我的public/index.php
文件。
从那里开始我根据URL
中给出的参数进行路由。
问题在于我的css
文件包含在view
中,即href="css/app.css"
。在指定http://hostname/public/something
之类的请求时,一切正常,但如果我更深入一个目录,例如:
http://hostname/public/something/else
,我的css休息。
我该如何解决这个问题?
答案 0 :(得分:4)
那是因为您使用相对路径代替绝对路径来处理所有html链接(图片,javascript,css,href链接) 。
实际上,您的规则可以创建虚拟目录。
让我们说你有这样的css链接
<link rel="stylesheet" type="text/css" href="css/style.css">
对于某些示例,这是路径解析
/public/something
- &gt; /public/css/style.css (好)/public/something/else
- &gt; /public/something/css/style.css (错误)要避免此行为,请使用绝对路径
<link rel="stylesheet" type="text/css" href="/public/css/style.css">
或者,如果您不想更改所有html链接,可以在<head>
html标记
<base href="/public/">
答案 1 :(得分:1)
使用href="/public/css/app.css"
等绝对链接。
如果/public
部分是可变的,例如在开发机器和生产服务器之间,然后使用变量或常量:
<?php echo ROOT_URL . '/css/app.css'; ?>
最有用的事情通常是为此创建一个小辅助函数:
<?php echo css('app.css'); ?>
根据您使用的模板系统类型,这可能看起来很不错:
{{ css 'app.css' }}
答案 2 :(得分:1)
尝试向您的PHP应用程序添加全局变量或常量或一些函数:$ site_root,这是您的根目录的路径。例如CodeIgniter使用url_helper执行此操作,请参阅:https://ellislab.com/codeigniter/user-guide/helpers/url_helper.html
然后在css文件
... href="<?php echo site_url() ?>/link/to/your/file.css" ...