url - .htaccess 隐藏index.php 并使用pathinfo 导致css js加载错误
问题描述
自己搞了个简单的php 框架,使用 "?var=val1&var2=val2
" 形式的url 视图加载都正常,apache
下为了美化url, 使用 .htaccess规则 隐藏index.php
并使用pathinfo 格式
的url,页面和数据都可以加载,但是 css、js文件路径却变成了 pathinfo 格式的url
/public/css/style.css
了,导致css、js加载路径出错了。求一个正确的 .htaccess规则,让样式文件正确加载。
目前的出错情况:
项目框架放在 站点根目录下的capframework文件夹下 ,
使用 http://127.0.0.1/capframework/
访问一切ok,css加载ok,css url
为:http://127.0.0.1/capframework/public/css/captain.css
当使用 http://127.0.0.1/capframework/article/list/tag/php
访问时,css、js就出问题,路径变成了http://127.0.0.1/capframework/article/list/tag/public/css/captain.css
当前使用的规则为:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
求高手指点,把问题解决
这不是.htaccess的问题啊,你代码里面对css的引用用了类似这种形式吧:
<link href="public/css/captain.css">
那么当你的页面路径为http://127.0.0.1/capframework/article/list/tag/php
时,浏览器认为的css路径就变成在当前目录下,拼接上public/css/captain.css
,所以就变成http://127.0.0.1/capframework/article/list/tag/public/css/captain.css
。
所以你需要这样
<link href="/public/css/captain.css">
但是这样仍然不对,因为,浏览器就会认为css路劲是http://127.0.0.1/public/css/captain.css
。
因此,你还需要手动加入根目录
<link href="/capframework/public/css/captain.css">
然而,一般根目录不是个确定的东西,所以需要变量化,所有的php框架几乎都提供这么个变量。
这篇关于url - .htaccess 隐藏index.php 并使用pathinfo 导致css js加载错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!