[英]htaccess redirect domain root, but not /#AnchorName
我正在拼命地尝试找出如何仅重定向根目录,而不在斜杠/(包括锚号)之后重定向(字面上)任何内容。
我有一个登录页面,我也想重定向所有domainname.com的访问量,但是还需要让人们通过使用深链接(例如domainname.com/store、domainname.com/#about或domainname.com)进入主网站。 /#up(主页和Nav使用锚点)。
我正在使用的代码如下,结果是:
-重定向domainname.com> landingpage.domainname.com(GOOD)
-不重定向domainname.com/store(GOOD)
-重定向domainname.com/#about> Landingpage.domainname.com/#about(糟糕-这是问题)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domainname\.com [NC]
RewriteRule ^$ http://landingpage.domainname.com [L,NC,R=301]
谢谢,
詹姆士
詹姆士
您是否可以选择将资源从domain.com/store删除到sub.domain.com/store? 似乎您将要进行大量的重定向,随着时间的推移,它将变得笨拙。
无论如何,我只会重写domain.com请求,而将其他所有请求都保留下来。
RewriteEngine开
RewriteCond%{HTTP_HOST} ^ http://www.example.com [NC]
RewriteRule ^(。*)$ http://sub.example.com/ $ 1 [R = 301,L]
您不能使用htaccess来执行此操作,因为URL的#about
部分永远不会发送到服务器 ,如果从未发送给服务器,则所有apache和mod_rewrite都会看到/
,而没有#about
。 #about
是一个URL片段,严格位于浏览器的一边。 无法使用mod_rewrite阻止此重定向。
因此,您必须编写javascript来进行重定向,并摆脱htaccess文件中的重定向。
<script language=”javascript” type=”text/javascript”>
if(window.location.hostname != "landingpage.domainname.com" && // check that hostname isn't landingpage
!window.location.hash && // check that there is no fragment
window.location.pathname == "/") {
window.location = "http://landingpage.domainname.com/";
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.