不包括 CodeIgniter CSS 文件
我的 CodeIgniter 安装有一些奇怪的问题,我使用 modrewrite 来缩短我的 URL,例如我有一个 api 页面:
它工作得很好,我的 .htaccess 文件看起来像这个:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
但真正奇怪的是,如果我输入一个尾部斜杠:
API 页面加载正常,但无法加载包含所有页面中包含的基本 CSS 文件,如果它根本不加载任何内容就很好,但我需要阻止它加载实际的 api 页面。任何建议都会有帮助,
谢谢!
更新:我发现当我查看源代码时,当 CSS 正确加载时,我的 CSS 文件来自以下内容:
但是当它失败时加载它来自
http://www.mydomain.com/api/css/all.css< /a>
I have a bit of an odd problem with my CodeIgniter installation, I am using modrewrite in order to shorten my URLs, for example I have an api page:
And it works really well, my .htaccess file looks like this:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
But whats really strange is if I type a trailing slash:
The API page loads ok but it doesn't include the Base CSS file which is included on all the pages, it would be fine if it didn't load anything at all, but I need to stop it from loading the actual api page. Any advice would be helpful,
Thanks!
UPDATE: I have found that when I view source my CSS file comes from the following when the CSS loads correctly:
But when it fails to load it comes from
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(2)
当使用像 css/all.css
或 ./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
要解决这个问题,您需要
- 使用绝对 URL 路径,例如
/css/all .css
独立于基本 URL 路径 - 在 HTML 文档中指定不同的基本 URL(例如
/
);但请注意,这将影响所有相对 URL,而不仅仅是相对 URL 路径, - 调整您的相对 URL 路径以适应您的基本 URL 路径:
- 对于
/api
使用css/all.css
- 对于
/api/
使用../css/all.css
- 对于
/api/foo/bar/
使用../../../css/all.css
等
- 对于
我想第一个解决方案是最简单的。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
确保
config.php
文件中的base_url
中有一个尾部斜杠:并且在处理链接时始终调用
base_url()
...等编辑:
请注意,我正在使用此 wiki 页面 中的
mod_rewrite
但自从我的 CI 安装不在根目录(在/ci173/
内),RewriteBase
不是/
而是/ci173/
>。Make sure that you have a trailing slash in your
base_url
in theconfig.php
file:And always call the
base_url()
when dealing with links...etcEDIT:
Please note that I'm using the
mod_rewrite
from this wiki page BUT since my CI installation in not on the root (inside/ci173/
) theRewriteBase
is not/
but/ci173/
.