问题:重写url导致一些链接中断。
.htaccess有以下规则:
RewriteRule ^blog/(0-9+)/-0-9a-zA-Z+$ RewriteRule NC
标题模板中的样式表引用:
<link rel="stylesheet" type="text/css" href="style.css" />我可以点击:
Domain.com/blog/1/title-并能很好地找到文件,但是样式表链接中断
如果我直接去:
然后domain.com/index.php?action=blog&postID=1#.UYV1mcqRiSo加载样式表(忽略#.UYV1mcqRiSo,即来自Disqus的代码)。
这也破坏了我的徽标链接,即:
<a href="./">它不是带我去domain.com,而是转到domain.com/blog/1/
我的基本文件结构是:
index.php和style.css位于root中,它在/ viewPost.php文件夹中加载viewPost.php。
这是怎么回事,我怎么纠正呢?
发布于 2013-05-04 21:22:41
最简单的解决方案:通过使用斜杠(resp )将链接设置为相对于域根的链接即可。删除链接中引用当前文件夹的点):
<link rel="stylesheet" type="text/css" href="/style.css" />
<a href="/">Logo</a>发布于 2013-05-04 21:23:00
1.关于样式表链接
在重写规则之前,您必须将这些条件包含在.htaccess中:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d第一种方法意味着,只有当请求的URL是而不是对现有文件的时,重写规则才能工作;第二种方法对现有目录也是一样的。如果没有这些条件,style.css的请求也会传递给您的index.php文件,而不是直接传递给style.css文件。
如果您已经有了这些规则,但它仍然不起作用,那么问题在于URL路径,请参见下面。
2.关于URL路径
您在链接中使用相对URL,包括在<a href="./">和<link>标记中。在本例中,它们被解析为URL的当前目录(它被重写到同一个文件服务器端并不重要,路径是在客户端准备的,用斜杠/分隔的每个部分都被视为目录)。因此,如果当前URL为domain.com/blog/1/,则将./解析为domain.com/blog/1/。通往style.css的路径可以解析为domain.com/blog/1/style.css。如果您希望这些链接像它们直接在URL中的域名后面工作一样工作,您必须使用绝对URL,即/,您的徽标上的链接不带点;样式表链接使用/style.css。
https://stackoverflow.com/questions/16378984
复制相似问题