20

我有 CSS 文件,我想以 PHP 可变格式引用该文件中的一些图像路径。然后我在 html 文件中引用该 css 文件。以下是我的文件

CSS 文件

<? header ("Content-type: text/css");?>
 body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
 background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

HTML 文件

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="css/layout.css" media="screen"> 
</head>

其他事情。你能解释一下怎么做吗?

4

4 回答 4

19

如果您能够重命名您的 CSS 文件“layout.php”,则不需要所有这些变通方法:

您的 layout.php 文件如下所示:

<?php header("Content-type: text/css; charset: UTF-8"); ?>
body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

您的 HTML 文件如下所示:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="css/layout.php" media="screen"> 
</head>

这个问题非常相似: Include: css with php file extension?

于 2013-10-12T19:40:09.447 回答
2

可能的返回值base_url()不以路径分隔符结尾。

考虑到这一点,试试这个:

@import url("<?php echo base_url().'/public/';?>css/layout.css");

(注意“public”前面的斜线)

  • 通过浏览器的“查看源代码”或类似的方式检查页面的来源,并检查其中的路径@import是否正确

或者

  • 使用类似于 Chrome 的 devtools 的“网络”选项卡的请求记录器来查看您的浏览器尝试从哪个 URL 加载导入的 CSS 文件。

您还可以通过浏览器查看 CSS 以确定内容是否正确构建。如果您<?php在响应中看到,您需要让 Apache 将 CSS 文件视为 PHP。

您可以在 .htaccess 文件中添加类似于以下内容的内容:

<FilesMatch "\.css$">
    SetHandler application/x-httpd-php
    Header set Content-type "text/css"
</FilesMatch>

您应该确保启用“mod_headers”Apache 模块以允许使用该Header指令。

虽然,我个人会将此类动态样式表重命名为具有 .php.css 扩展名。这不会产生任何影响,但是可以将 Apache 配置为仅将动态样式表传递给 PHP 预处理器。

<FilesMatch "\.php\.css$">
    SetHandler application/x-httpd-php
    Header set Content-type "text/css"
</FilesMatch>
于 2013-10-12T19:25:29.227 回答
1

我认为问题在于.css文件不会被解释为 PHP,因此文件中的代码不会被执行。如果您将其作为 PHP 文件包含在内,则应执行您的代码并填写您的值。

[编辑] 这似乎是这样做的方法,正如某人在此处对原始帖子的评论中链接到的答案所指出的那样。

于 2013-10-12T19:27:33.943 回答
1

如果您对 url 重写有一点了解,这很简单。

在你的根目录中写一个 .htaccess 文件,它看起来像:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^customized\.css$ css\_generator\.php [L]
</IfModule>

现在只需创建一个包含内容的文件 css_generator.php:

<?php header('Content-type: text/css; charset: UTF-8'); ?>
 body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
 background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

您的 html 应如下所示:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="customized.css" media="screen"> 
</head>

了解刚刚发生的事情。

  • 在页面加载时,您的浏览器将加载customized.css,它将被重定向到css_generator.php
  • css_generator.php 的内容也将作为 yoursite.com/customized.css 提供

希望这可以帮助

于 2013-10-12T19:35:28.760 回答