【问题标题】:Site won't load CSS or images without trailing / after URL with Codeigniter网站不会使用 Codeigniter 加载 CSS 或图像而不在 URL 之后添加 /
【发布时间】:2012-01-12 12:43:12
【问题描述】:

我在 Codeigniter 中使用了路由来为我的页面获取干净的 URL。我还修改了 htaccess 文件以从 URL 中删除 index.php。

除了 1 个问题外,一切都很好 - 当我转到一个 URL 时,它不会加载 CSS 或图像,除非在 URL 中添加了尾随 /。

例如:

mysite.com/blah 不工作

mysite.com/blah/ 确实有效

.htaccess 文件中可能有什么东西?这是我的文件:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|user_photos|favicon|robots\.txt)
RewriteRule ^(.*)$ /subdirectory/index.php/$1 [L]

有什么想法吗?当然,我希望用户即使不添加尾随 / 也能够访问该页面

【问题讨论】:

  • 您在包含中使用相对路径还是绝对路径,即src="css/filename.csssrc="/css/filname.css"
  • 我的路径如下所示:href="css/structure.css" 或 href="../css/structure.css"
  • 您是否尝试将它们更改为绝对?你有可能这样做吗?您是否检查了 Firebug 的 Network 选项卡以查看在 CSS 不加载的情况下实际请求了哪些文件?
  • 更改为absolute时不起作用,CSS不会在任何页面上加载。
  • 我认为这是因为它将 mysite.com/blah/ 视为它自己的目录,并将 mysite.com/blah 视为根目录,因此它在错误的位置(1 个目录)中寻找 CSS太高)。但我不知道要停止这样做,并将 mysite.com/blah 视为它自己的目录。

标签: .htaccess codeigniter


【解决方案1】:

在你的css URL前使用<?php echo base_url();?>

示例:

<link rel="stylesheet" href="<?php echo base_url();?>theme/css/main.css" />

至于.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /subdirectory/index.php/$1 [L]
RewriteCond $1 !^(index\.php|includes|theme|media|robots\.txt|fonts)

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多