htaccess 和 css 文件

Posted

技术标签:

【中文标题】htaccess 和 css 文件【英文标题】:htaccess and css files 【发布时间】:2012-10-31 07:24:52 【问题描述】:

我有这个项目:

在索引中,我使用以下代码检查 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

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

【问题讨论】:

也许这会有所帮助:***.com/questions/13305963/… 快速旁注:您发布的代码示例会产生潜在的安全问题(路径遍历)。你永远不应该相信用户输入! 向我们展示这一行,您是如何将 test.css 包含在您的条目脚本中的。 详细说明 Martijn 的观点:如果您将该代码放在公开可用的 Web 服务器上,您将向全世界开放该服务器。您应该将 URL 参数的值与一组预定义的值进行比较,并根据该值加载正确的文件。为此,参数应该具有不同的名称,例如 pageId 或其他名称。然后执行:if($_GET['pageId'] == 'page1') require_once('path/to/file'); . 【参考方案1】:

您需要使 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/,因此您的相对链接会在前面附加错误的基数。

【讨论】:

是的,这是我的问题。现在修好了!谢谢 :)【参考方案2】:

问题是你没有给 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" />

【讨论】:

以上是关于htaccess 和 css 文件的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 不加载 css 和 js

htaccess 重写条件将 css 和 js 文件更改为索引页面内容

php中htaccess重定向url后无法加载css和js

.htaccess:使用 RewriteCond 但对 IMAGES/JS/CSS 文件的hrefs仍然被不必要地重写[重复]

.htaccess 重定向除 css 和 javascript 之外的所有扩展

xampp 上的 .htaccess 文件(基于错误.. 图像路径不正确,css 文件..)