1

我正在使用 apache 的 mod_rewrite 模块将我的 URL 结构(例如www.mydomainname.com/user.php?u=somename- )改进为一些花哨的 URL,例如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>
4

3 回答 3

7

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

<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>
于 2012-11-09T10:30:22.277 回答
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>

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

于 2012-11-09T10:11:30.713 回答
-2

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

例子:

#LoadModule rewrite_module modules/mod_rewrite.so

改变它:

LoadModule rewrite_module modules/mod_rewrite.so
于 2012-11-09T10:18:09.050 回答