3

我有这个项目:

在此处输入图像描述

在索引中,我使用以下代码检查 url:

if( isset( $_GET['url'] ) ) {
   if( file_exists( 'classes/layout/'.$_GET['url'].'.php' ) ) {
    require_once 'classes/layout/'.$_GET['url'].'.php';
   } 
}

在我的 .htacces 中:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*?)$ index.php?url=$1&%{QUERY_STRING} [L]

这很好用。何时转到示例:127.0.0.1/test/pages/edit 索引包括 edit.php 但在索引中我使用了一个名为 test.css 的 css 文件,它使整个 html 背景变为红色。

如果我去 127.0.0.1/test/ 我看到整个背景都是红色的。但是当我去 127.0.0.1/test/pages/edit 它是白色的。我检查了css文件的url,我得到了这个:

127.0.0.1/test/ = 127.0.0.1/test/cache/css/test.css

127.0.0.1/test/pages/edit = 127.0.0.1/test/pages/cache/css/test.css

有人知道如何解决这个问题吗?

4

2 回答 2

1

问题是你没有给出正确的css路径。始终尝试从基本 url 调用样式/脚本,如下所示:希望这会有所帮助。

   <?php 
if($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
   define("SITEROOT","http://localhost/test/"); // base to your web directory ie,www or htdocs
    ?>
    //call style in this manner
    <link href="<?php echo SITEROOT; ?>Sourcefiles/cache/css/test.css" rel="stylesheet" type="text/css" />
于 2012-11-11T19:26:44.823 回答
1

您需要使 css 链接成为绝对链接(以 a 开头/test/)或通过将其添加到页面标题来为所有相对链接添加基础:

<base href="/test/">

(基本 URI 可能需要调整,但看起来像您想要的那样/test/

发生这种情况的原因是浏览器会根据加载的 URL 猜测 URI-base 是什么。当您放入http://127.0.0.1/test/浏览器时,浏览器假定 URI 基础是/test/并且所有相关链接都将其附加到前面。但是,当您放入http://127.0.0.1/test/pages/edit浏览器时,它会假定基础是/test/pages/,因此您的相对链接会在前面附加错误的基础。

于 2012-11-11T20:35:48.557 回答