我看过这个问题的一些可能的重复,但重写规则对项目非常具体,所以我找不到合适的答案。
问题的关键? htaccess文件正在重写(我认为)对某些文件(CSS,JS和图像)的请求。
我有一个htaccess文件设置为如下指示:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]
它需要一个像localhost / framework / booking / dashboard这样的URL并重写为localhost / framework / index.php?controller = booking& action = dashboard
我本地www文件夹中的相关文件结构如下所示:
框架
-index.php
-htaccess
-views
-Booking
-dashboard.php
-wuxia-blue.css
dashboard.php中的CSS链接如下:
<link rel='stylesheet' type='text/css' href="wuxia-blue.css">
正在发出的HTTP请求似乎是: /framework/booking/wuxia-blue.css
它应该是: /framework/views/booking/wuxia-blue.css
理想情况下,我想使用与
类似的东西href="<?php echo(CSS . "wuxia-blue.css"); ?>".
其中CSS是应用程序中定义的常量,其中wuxia-blue.css(和所有其他css文件)包含在样式表的预定义文件夹中。显然这适用于其他资产,如.js文件和图像。
有什么想法吗?
答案 0 :(得分:1)
htaccess规则是正确的 - 问题在于您的文件夹结构。
当您创建相对链接时,它相对于地址栏中显示的当前网址 - 您所处的文件的位置并不相关。
您的视图文件位于/framework/views/booking/dashboard.php,但浏览器只能看到url / framework / booking / dashboard。这意味着浏览器将资源的位置解释为/framework/booking/dashboard/wuxia-blue.css
就个人而言,我建议您将所有css和图像保留在/ images和/ css框架之外。否则,可能必须在框架中添加一些代码来提供图像文件,因为所有图像请求都将通过framework.php文件运行。