.htaccess CSS没有加载

时间:2014-03-08 17:09:15

标签: apache .htaccess mod-rewrite

我在wamp服务器上编写了一个PHP网站,因为我使用了.htaccess文件来重写网址。

我的.htaccess就像,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test.*$ test.php?id=

它会将http://localhost/test/?id=5之类的网址重写为http://localhost/test/5

问题是,当我输入http://localhost/test时,它正确加载了css,但如果我写http://localhost/test/,则css被阻止。

我检查了阙:.htaccess does not load css and js

但我无法弄清楚为什么会发生这种情况。哪里错了?

2 个答案:

答案 0 :(得分:2)

首先,您的代码应如下所示

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/([0-9]+)$ /test.php?id=$1 [L]

MultiViews 在此非常重要,因为您的符号链接和文件具有相同的基本名称。
这样,http://localhost/test将不再匹配(因为这不是您想要的)。 http://localhost/test/,仅http://localhost/test/NUMBER(没有斜杠)

然后,您的css(以及图像和javascript等)问题是由于您的规则生成的虚拟目录。换句话说,它正试图立即解析/test/目录中的css / images / js。

要避免这种行为,请在test.php html标记后面的<head>文件中添加此代码:
<base href="http://localhost/" />

此外,您的css(和js,图片等)html链接不得以斜线/开头

css样式表的示例:
<link rel="stylesheet" href="css/style.css" type="text/css" />
----------------------------------------------- ^ 没有斜线

答案 1 :(得分:1)

使用它:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test*$ test.php?id=

编辑:

只需删除.

上的^test.*$(点)即可