我在.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,并且未定义$。感谢
答案 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