重写规则htacces在错误的文件夹中搜索css

时间:2014-10-28 20:47:56

标签: html css .htaccess

当我添加我的HTaccess重写规则时,我的scr属性的路径被转移了。对于第一个规则,所有CSS都可以正常工作,但是当它在链接中添加第二个变量时,我的css文件和脚本文件突然被调出错误的文件夹。

Options +FollowSymLinks
RewriteEngine On
RewriteBase /jellyfish_rework/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ index.php?p=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ index.php?p=$1&t=$2 [L]

在第一条规则中,一切都很完美。例如,当我的链接是一个变量(页面的p变量)时,它应该工作。这种情况下的链接最终为http://localhost/jellyfish_rework/blog。并且正常调用css和脚本

<link href="css/jellyfish.css" rel="stylesheet" type="text/css">将成为我的css样式表的链接。

然而,当我的t(代表标题)变量被填写时,例如当我试图在我的博客中找到特定的帖子时,我的整个链接都会改变。 Chrome控制台将在http://localhost/jellyfish_rework/artikel/Lancering-van-onze-nieuwe-website输出以下内容:

GET http://localhost/jellyfish_rework/artikel/css/font-awesome.min.css  Lancering-van-onze-nieuwe-website:23
GET http://localhost/jellyfish_rework/artikel/css/jellyfish.css  Lancering-van-onze-nieuwe-website:24
GET http://localhost/jellyfish_rework/artikel/css/bootstrap.min.css  Lancering-van-onze-nieuwe-website:22
GET http://localhost/jellyfish_rework/artikel/css/animate.css  Lancering-van-onze-nieuwe-website:25
GET http://localhost/jellyfish_rework/artikel/js/custom/knob.js  Lancering-van-onze-nieuwe-website:168
GET http://localhost/jellyfish_rework/artikel/js/bootstrap/bootstrap.min.js  Lancering-van-onze-nieuwe-website:166
GET http://localhost/jellyfish_rework/artikel/js/custom/wow.min.js  Lancering-van-onze-nieuwe-website:167
GET http://localhost/jellyfish_rework/artikel/js/custom/jellyfish.js  Lancering-van-onze-nieuwe-website:169 

为什么将/article/添加到我的脚本和css的相对路径中?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于您在css / js / images中使用了相对URL,因此遇到此问题。您可以通过以下方式之一修复它:

  1. 在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。

  2. 否则,请尝试在页面的HTML标题中添加此标题:<base href="/" />,以便从该网址解析每个相对网址,而不是当前网址。