在URL末尾添加斜杠后,CSS消失了

3
问题是当我在地址栏后面加上一个斜杠 localhost/register.php/,CSS就会消失(不再应用)。CSS位于单独的文件夹中。以下是目录结构:

Structure

CSS在header.html中调用,代码如下:<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />。 在index.php中使用include 'includes/header.html';引入header.html
我运行的是Windows 7操作系统下的Apache。
1个回答

8
当添加尾随斜杠时,您的浏览器会将register.php视为另一个目录,而不是文件。当指定相对URL时,外部资源将相对于子目录register.php/(因为有斜杠)进行搜索。 示例:
  • 添加斜杠之前:
    css/style.css > http://localhost/css/style.css
  • 添加斜杠之后:
    css/style.css > http://localhost/register.php/css/style.css
修复方法:
要解决此问题,请使用绝对URL。以下是两种方法:
  • <link href="/css/style.css" ... />
  • <link href="http://localhost/css/style.css" ... />
  • <base href="/register.php" />(此标签必须在<head>中指定)

2
对于<base>标签的建议进行一些详细说明:必须在任何相对URL之前指定它。如果您在其中一个URL(例如在<link>标签之后)之后指定它,它仍将失败。 - Niet the Dark Absol
但如果它被视为目录,为什么仍然被处理为 PHP? - abruski
1
请注意,我说的是“你的浏览器假定..”。你的浏览器试图包含外部资源(根据基本路径的猜测),而你的服务器正确地提供了文件。 - Rob W
小细节:<link href="/... 通常被称为 根相对 路径。 - steveax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接