我正在使用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>
答案 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