假设默认控制器是root.php,那么两个URL都可以正常工作
website.com/
website.com/root
如果控制器具有名为 login 的功能,则此URL也有效
website.com/root/login
但是,在第一个示例中使用的HTML模板在第二个示例中不起作用,例如此相对路径不再有效
<link rel='stylesheet' href='stylesheets/style.css'/>
而不是website.com/root/login
我必须使用不同的路径
<link rel='stylesheet' href='../stylesheets/style.css'/>
即使我在同一个控制器中并尝试使用相同的样式表。
有办法吗?
答案 0 :(得分:3)
这是因为浏览器正在寻找相对于地址栏中url的样式表。
所以在第二个url中的第一个样式表的情况下,即:
<link rel='stylesheet' href='stylesheets/style.css'/> @ website.com/root/login
浏览器正在
中查找文件website.com/root/stylesheets/styles.css
哪个不是保存文件的位置。我假设他们实际上在website.com/stylesheets/styles.css
。
最简单的方法是简单地制作相对于网站根目录的所有路径。
所以如果你试试这个,你会发现它有效。
<link rel='stylesheet' href='/stylesheets/style.css'/>
答案 1 :(得分:2)
如果您的开发环境位于子目录中(例如:htdocs/myWebSite/
),但您的生产网站不在子目录中,那么只需使用/stylesheets/style.css
即可在两个版本之间来回迁移您的网站令人难以置信的痛苦,因为您必须浏览每个这样的链接,并从每个链接中添加/减去/myWebsite
。
可能的解决方案是在代码中定义代表根目录的全局变量,然后在所有链接的开头使用该变量。例如:
$BASEurl = "http://localhost/myWebsite";
echo "<link rel='stylesheet' href='$BASEurl/stylesheets/style.css'>";
然后,当您将项目上传到生产服务器时,只需将$ BASEurl的值更改为http://www.nameOfYourDomain.com
,就可以了。