0

我查看了这个问题的一些可能的重复项,但重写规则是针对项目的,所以我找不到合适的答案。

问题的症结所在?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 文件和图像。

有任何想法吗?

4

1 回答 1

1

htaccess 规则是正确的 - 问题在于您的文件夹结构。

当您创建相对链接时,它与地址栏中显示的当前 URL 相关 - 您所在文件的位置不相关。

您的视图文件位于 /framework/views/booking/dashboard.php,但浏览器只看到 url /framework/booking/dashboard。这意味着浏览器将资源的位置解释为 /framework/booking/dashboard/wuxia-blue.css

就个人而言,我建议将所有 CSS 和图像保留在 /images 和 /css 中的框架之外。否则,可能必须在您的框架中添加一些代码来提供图像文件,因为所有图像请求都将通过您的 framework.php 文件运行。

于 2012-11-13T20:35:21.653 回答