.htaccess URL重写问题(脚本不加载)

时间:2011-02-26 22:27:13

标签: regex .htaccess url rewrite

我在.htaccess中遇到网址重写问题。

这是我的重写代码

RewriteEngine on
RewriteBase /

RewriteRule     ^terms(.*)  terms.php [L,nc]
RewriteRule ^formgate\/([a-zA-Z0-9]{64,64})$ formgate.php?g=$1 [L,nc]

当页面加载时,它正常运行,除了我的所有样式表,javascript文件等都没有正确加载。如果您检查错误,则表明未找到404,并且未定义$。感谢

1 个答案:

答案 0 :(得分:4)

此问题通常来自将相对网址用于样式表或javascript文件,并将其与虚拟目录结构相结合。如果您有这样的重写:

RewriteRule ^articles/(.*)$ articles.php

然后你有一个像:

这样的网址
http://example.com/articles/2011/03/14/title-of-the-article

包含HTML:

<link rel="stylesheet" type="text/css" href="css/general.css" />

无论您的文件artices.php是否位于您的网络目录的根目录中,浏览器都不知道它,因为浏览器隐藏了mod_rewrite的问题。所以它会要求提供文件:

http://example.com/articles/2011/03/14/title-of-the-article/css/general.css

显然不存在。因此,我建议指定相对于您的Web根目录的URL。例如:

<link rel="stylesheet" type="text/css" href="/css/general.css" />

注意URL前面的/

请注意以下事项:当您的网址以/字符开头时,表示相对于网页的路径。看看这个示例的directurey结构:

/
    /index.html
    /afolder
        /afolder/stylesheets
            /afolder/stylesheets/first.css
            /afolder/stylesheets/second.css
        /afolder/images
            /afolder/images/a.jpg
    /otherfolder
        /otherfolder/something.html