我在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
但我无法弄清楚为什么会发生这种情况。哪里错了?
答案 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.*$
(点)即可