.htaccess重写规则导致css,js停止工作

时间:2016-09-15 09:48:37

标签: php html css .htaccess mod-rewrite

我知道这是常见问题,但我无法在SO处找到解决方案

htaccess是

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

并且index.php只包含一个require到index.html,其中html存在。

我曾尝试在我的css相对路径中使用/,但没有任何改变。我也使用<base href="/">,但也没有任何改变。指令

RewriteRule ^(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [NC,L]

也无法解决问题。

更新。问题已解决

我检查了显示错误variable ${REQUEST_FILENAME} is not defined的错误日志。因此,在$%更改为.htaccess可以解决问题

2 个答案:

答案 0 :(得分:1)

请注意,在Apache httpd 2.2.16及更高版本中,有一个新指令是为这种情况创建的。它叫做FallbackResource。见http://httpd.apache.org/docs/current/mod/mod_dir.html#fallbackresource

在您的情况下,您想要:

FallbackResource /app/index.php

答案 1 :(得分:0)

确保页面中的所有链接都已完全定义

&#13;
&#13;
<head>
  <link href="http://yoursite.com/style.css" rel="stylesheet" type="text/css">
  <script src="http://yoursite.com/script.js"></script>
  </head>
&#13;
&#13;
&#13;

如果你只有<link href="style.css" rel="stylesheet" type="text/css">,那么在使用.htaccess之后它就无法工作。