我有这个元素:
在索引中,我使用以下代码检查网址:
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/