CSS和JS没有加载mod_rewrite

时间:2012-11-09 10:07:56

标签: php mod-rewrite

我正在使用apache的mod_rewrite模块将我的网址结构(对于一个实例 - www.mydomainname.com/user.php?u=somename)改进为某些奇特的网址,例如www.mydomainname.com/user/somename。我已成功实现它,直到我遇到CSS和JS相对路径问题的非常糟糕的情况。 每当我打开www.mydomainname.com/user/somename时,它都会成功加载而不使用CSS和JS,只有文本和基本HTML。我使用了chrome的“检查元素”功能,它可以帮助我了解发生的以下错误。

GET http://www.mydomainname.com/user/css/style.css 404 (Not Found) somename:5
GET http://www.mydomainname.com/user/css/developer.css 404 (Not Found) somename:6
GET http://www.mydomainname.com/user/js/jquery-1.5.2.js 404 (Not Found) somename:7
GET http://www.mydomainname.com/user/js/jquery.form.js 404 (Not Found) somename:5

.htaccess文件包含以下内容 -

DirectoryIndex index.html.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule    ^user/([^/.]+)/?$    user.php?u=$1    [L]

user.php驻留在父文件夹以及CSS和JS文件夹中。我知道原因,但不知道如何删除错误。

编辑:user.php文件中给出的CSS和JS的路径是 -

<link type = "text/css" rel = "stylesheet" href = "css/style.css">
<link type = "text/css" rel = "stylesheet" href = "css/developer.css">
<script type="text/javascript" src="js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>

3 个答案:

答案 0 :(得分:7)

尝试添加绝对路径(只需在网址开头添加/):

<link type = "text/css" rel = "stylesheet" href = "/css/style.css">
<link type = "text/css" rel = "stylesheet" href = "/css/developer.css">
<script type="text/javascript" src="/js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>

答案 1 :(得分:2)

 DirectoryIndex index.html.php
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule    ^user/([^/.]+)/?$    user.php?u=$1    [L]

我相信您允许请求文件而不是目录。 JS / CSS文件位于子目录中。

//更新 您正在使用的相对路径是问题。

您为路径粘贴的代码,实质上是说,在当前文件夹的子文件夹中查找此css文件。子文件夹不存在,因此出错。

将您的代码更改为以下内容。

<link type = "text/css" rel = "stylesheet" href = "/css/style.css">
<link type = "text/css" rel = "stylesheet" href = "/css/developer.css">
<script type="text/javascript" src="/js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="/js/jquery.form.js"></script>

这将转换为从根文件夹中查找文件。

答案 2 :(得分:-2)

你不用担心它。你可以从apache打开“httpd.conf”文件。并从下面删除哈希。

示例:

#LoadModule rewrite_module modules/mod_rewrite.so

改变它:

LoadModule rewrite_module modules/mod_rewrite.so