.htaccess文件不加载js和css

时间:2017-07-17 19:45:15

标签: javascript php css apache .htaccess

我正在通过youtube上的howcode尝试MVC教程,但发现htaccess不允许加载我的css和js文件。

.htaccess文件:

RewriteEngine On
RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]

我试图通过互联网找到一些解决方案但最终会产生其他错误。我在规则之前使用了条件:

RewriteCond %{REQUEST_FILENAME} -f

但这似乎不起作用。

项目结构 -

我在项目中有这些文件

  1. 课程(文件夹)
  2. 控制器(文件夹)
  3. 观点(文件夹)
  4. 的.htaccess
  5. 的index.php
  6. routes.php文件
  7. 在Views文件夹中我有 -

    1. css(文件夹)
    2. js(文件夹)
    3. 的index.php
    4. 的header.php
    5. footer.php
    6. 我的所有导入都在header.php中,header.php包含在index.php

      我的链接css的代码是 -

      <link href="./Views/css/style.css" rel='stylesheet' type='text/css' media="all" />
      

1 个答案:

答案 0 :(得分:1)

  

我在规则之前使用了条件:

RewriteCond %{REQUEST_FILENAME} -f

条件与你想要实现的相反 - 逻辑是相反的。该条件测试文件是否存在,并且仅当文件存在时才处理RewriteRule。只有当请求的文件 not 存在时,才需要执行规则。例如:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]

请注意 CondPattern 上的!前缀。这否定条件。

更新:请注意,上述RewriteRule 模式(即。^([^/]+)/?)排除了对文档根目录的请求(即{{1} - URL路径)。因此,对于此请求,PHP脚本中的http://example.com/ GET参数确实是 undefined 。但是,这应该没问题,只要你在使用它之前检查这个变量是否存在(如你所愿)。例如:

url

如果您明确希望为此类请求设置此参数(并处理您的指令)(尽管不必要),则需要从{{1}更改$url = isset($_GET['url']) ? $_GET['url'] : null; 模式RewriteRule,即。将^([^/]+)/?(1或更多)更改为^([^/]*)/?(0或更多)。