首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache重写URL创建链接问题

问Apache重写URL创建链接问题
EN

Stack Overflow用户
提问于 2013-05-04 21:08:38
回答 2查看 156关注 0票数 2

问题:重写url导致一些链接中断。

.htaccess有以下规则:

RewriteRule ^blog/(0-9+)/-0-9a-zA-Z+$ RewriteRule NC

标题模板中的样式表引用:

代码语言:javascript
复制
<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的代码)。

这也破坏了我的徽标链接,即:

代码语言:javascript
复制
<a href="./">

它不是带我去domain.com,而是转到domain.com/blog/1/

我的基本文件结构是:

index.php和style.css位于root中,它在/ viewPost.php文件夹中加载viewPost.php。

这是怎么回事,我怎么纠正呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 21:22:41

最简单的解决方案:通过使用斜杠(resp )将链接设置为相对于域根的链接即可。删除链接中引用当前文件夹的点):

代码语言:javascript
复制
<link rel="stylesheet" type="text/css" href="/style.css" />
<a href="/">Logo</a>
票数 2
EN

Stack Overflow用户

发布于 2013-05-04 21:23:00

1.关于样式表链接

在重写规则之前,您必须将这些条件包含在.htaccess中:

代码语言:javascript
复制
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。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16378984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档