为什么这个htaccess文件在wamp服务器上不起作用

时间:2014-09-02 15:13:01

标签: php .htaccess wamp wampserver

我有这个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>

1 个答案:

答案 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/

  • 您必须以这种方式更改所有html链接(添加/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>