【问题标题】:Request for resources (CSS, JS) being incorrectly redirected by htaccess rewrite ruleshtaccess 重写规则错误地重定向资源请求(CSS、JS)
【发布时间】:2012-11-14 04:35:55
【问题描述】:

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

问题的症结所在? 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
-意见
-预订
-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 文件和图像等其他资产。

有什么想法吗?

【问题讨论】:

  • 尝试添加基本链接,将其更改为 href="/views/booking/wuxia-blue.css"
  • 嗯,您的评论略有改动。我使用了 href="framework/views/booking/wuxia-blue.css"。我想在php中使用一些相关的东西,比如调用一个常量来访问css文件。因此,例如: 。所以我觉得我需要快速编辑问题。

标签: php .htaccess rewrite


【解决方案1】:

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

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

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

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

【讨论】:

  • 山姆,谢谢。我稍微编辑了这个问题。事实上,我同意结构是愚蠢的。我沮丧地移动了css文件,试图让它工作。所以让我详细说明一下它应该是什么:有一个与“views”文件夹处于同一级别的资源文件夹。 css 文件、js 文件等都在其中。 framework.php 实际上是一个文件夹而不是文件,我的 url 是通过 index.php 提供的
猜你喜欢
  • 2012-03-30
  • 2020-11-01
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多