0

我的 CodeIgniter 安装有点奇怪,我使用 modrewrite 来缩短我的 URL,例如我有一个 api 页面:

http://www.mydomain.com/api

而且效果非常好,我的 .htaccess 文件如下所示:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

但真正奇怪的是,如果我输入一个斜杠:

http://www.mydomain.com/api/

API 页面加载正常,但它不包含所有页面中包含的 Base CSS 文件,如果它根本不加载任何东西会很好,但我需要阻止它加载实际的 api 页面。任何意见将是有益的,

谢谢!

更新:我发现当我查看源代码时,当 CSS 正确加载时,我的 CSS 文件来自以下内容:

http://www.mydomain.com/css/all.css

但是当它无法加载它来自

http://www.mydomain.com/api/css/all.css

4

2 回答 2

1

base_url确保文件中有一个斜杠config.php

$config['base_url'] = "http://www.mydomain.com/";

base_url()并且在处理链接时 总是调用...等

<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>css/all.css">

编辑:
请注意,我正在使用mod_rewrite来自此wiki 页面的 ,但因为我的 CI 安装不在根目录(内部/ci173/)上,但RewriteBase不是。//ci173/

于 2010-12-31T13:55:54.363 回答
1

当使用相对 URL 路径,如css/all.cssor ./css/all.css(两者是等价的)时,您需要注意相对 URL 路径(如任何相对 URL)是使用基本 URL 解析的,该基本 URL是当前文档的 URL(如果未另行指定)。

因此,在您的情况下/api,或者/api/是基本 URL 路径,并且相对 URL 路径css/all.css根据基本 URL 路径的不同解析:

  • /api+ css/all.css/css/all.css
  • /api/+ css/all.css/api/css/all.css

要克服这一点,您要么需要

  • 使用/css/all.css独立于基本 URL 路径的绝对 URL 路径
  • 在您的 HTML 文档中指定不同的基本 URL(例如/);但请注意,这将影响所有相对 URL,而不仅仅是相对 URL 路径
  • 调整您的相对 URL 路径以适应您的基本 URL 路径:
    • /api使用css/all.css
    • /api/使用../css/all.css
    • /api/foo/bar/使用../../../css/all.css

我想第一个解决方案是最简单的。

于 2010-12-31T12:55:43.913 回答