我的CodeIgniter安装有点奇怪,我使用modrewrite来缩短我的网址,例如我有一个api页面:
它的效果非常好,我的.htaccess文件看起来像这样:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
但是,如果我输入一个尾随斜杠,那真的很奇怪:
API页面加载正常,但它不包括所有页面中包含的Base CSS文件,如果它根本没有加载任何东西就没关系,但我需要阻止它加载实际api页面。任何建议都会有所帮助,
谢谢!
更新:我发现当我查看源代码时,我的CSS文件来自以下正确加载CSS时的文件:
但是当它无法加载时,它来自
答案 0 :(得分:1)
使用css/all.css
或./css/all.css
等相对网址路径(两者都是等效的)时,如果没有另外指定,则需要注意relative URL paths (like any relative URLs) are resolved using a base URL是当前文档的网址。
因此,在您的情况下,/api
或/api/
是基本网址路径,相对网址路径css/all.css
的解析方式会有所不同,具体取决于基本网址路径:
/api
+ css/all.css
→/css/all.css
/api/
+ css/all.css
→/api/css/all.css
要征服这一点,您需要
/css/all.css
/
);但请注意,这会影响所有相对网址,而不仅仅是相对网址路径/api
使用css/all.css
/api/
使用../css/all.css
/api/foo/bar/
使用../../../css/all.css
等我想第一个解决方案是最简单的。
答案 1 :(得分: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">
编辑:
请注意,我正在使用此wiki page中的mod_rewrite
但由于我的CI安装不在根(/ci173/
内),RewriteBase
不是{{1}但是/
。