我有这个htaccess文件,当url的类型为www.mywebsite.com/news时,它会重定向到index.php 但是当url的类型为www.mywebsite.com/news/2时,它会显示index.html但不会应用css 我在wamp服务器上
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
</IfModule>
答案 0 :(得分:4)
那是因为/news/2
创建了一个虚拟目录
由于您的html链接使用相对路径,因此无效。
让我们假设你有一个像这样的CSS链接
<link rel="stylesheet" type="text/css" href="style.css">
由于您的URI为/news/2
,因此会在/news/style.css
中进行搜索,而这不是您想要的。
相反,请使用绝对路径
例如:<link rel="stylesheet" type="text/css" href="/style.css">
(带有前导斜杠,如果它不在根文件夹中,可能是另一个基础)。
此外,将RewriteBase /
放入htaccess(或index.php
之前的前导斜杠)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php [L]
</IfModule>
编辑:对于localhost上的项目/project_news/
/project_news
前缀)
<link rel="stylesheet" type="text/css" href="/project_news/css/style.css">
<base href="/project_news/">
html标记之后添加<head>
(在所有相关的html网页中)然后,用这个替换你当前的htaccess代码
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /project_news/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
</IfModule>