繁体   English   中英

htaccess重定向域根,但不是/#AnchorName

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM