我有这个元素:

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

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

在我的 .htaccess 中:
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 至使整个 html 背景红色的 css 文件。

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

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

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

最佳答案

您需要将 css 链接设为绝对链接(以 /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/,因此您的相关链接将错误的基数附加到前面。

关于php - htaccess 和 css 文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13334095/

10-12 00:13
查看更多