【问题标题】:I need help with redirects我需要重定向方面的帮助
【发布时间】:2011-05-24 08:57:41
【问题描述】:

有一个页面有两个域:
www.exampleone.com
www.exampletwo.com

我需要重定向到起始页:
www.exampleone.comwww.exampleone.com/#!/news.html
www.exampletwo.comwww.exampletwo.com/#!/news.html

最后但同样重要的是,对于每一页,我需要这样的重定向,例如:www.exampleone.com/about.htmlwww.exampleone.com/#!/about.html www.exampletwo.com/about.htmlwww.exampletwo.com/#!/about.html

我真的不知道如何解决这个问题,我应该使用 Javascript 还是 .htaccess?对于我示例中的最后一个重定向,最好使用条件对吗?但是怎么做?

有什么想法吗?

注意:内容是用ajax加载的,所以索引页面总是一样的,这就是/#!/...这个东西。

编辑:直截了当,有实时地址http://www.jester04.chhttp://www.jester04baden.ch,起始页重定向已解决,如您在 js 文件中所见,但对于/#!/ 重定向,我仍然需要帮助,谢谢。

【问题讨论】:

  • 您目前使用什么来处理 JS 中的 shebang (#!) URL 以通过 ajax 加载页面?我想你可以在其中放一些东西来处理不存在的重定向。
  • @ben:shebang是因为google ajax crawling method,为了支持书签和历史我使用了jQuery地址插件。

标签: javascript .htaccess redirect dns


【解决方案1】:

首先我会重定向两个主页:

RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) /#!/news.html [R,L]

然后是所有其他页面

RewriteRule (.*) /#!/$1 [R,L]

没有测试,但这应该可以。

【讨论】:

  • 谢谢,这就是我要找的!但是/#!/ 有问题,用你的解决方案,它给了http://exampleone.ch/%23!/news.html,有什么想法吗?
  • @Thomasz,# 和之后永远不会发送到服务器,所以这个解决方案会将任何初始请求重定向到 exampleone.ch/#!/whateverexampleone.ch/#!/news.html
  • @ben:是的,你是对的。但是页面的内容是用ajax加载的,浏览器永远不会重新加载(当然第一次除外)。我说的是哈希片段,应该用ajax加载哪个页面。 Stephan Muller 的这个解决方案可以工作,唯一的问题是,#sign 将无法正确显示,一定是编码问题或其他问题......
  • @Thomasz,进行完全刷新的人将意味着他们将被重定向回 news.html 页面,而不是他们当前所在的页面。尽管为了纠正斯蒂芬的规则,将两个规则中的 [R,L] 更改为 [R,L,NE]
  • 不错的 Ben,以前从未听说过该标志,但它似乎有效
【解决方案2】:

你可以把这段 JS 代码放在单独的 .js 文件中,然后在每个页面中包含这个文件:

var sURL = (window.location.href + "").replace("http://", "");
if (sURL.indexOf("/#!/") < 0) {
   if (sURL.substr(sURL.length - 1, 1) == "/")
       sURL = sURL.substr(0, sURL.length - 1);
   var arrTemp = sURL.split("/");
   var sDomain = arrTemp[0];
   var sPage = (arrTemp.length > 1) ? arrTemp[arrTemp.length - 1] : "news.html";
   var sNewUrl = sDomain + "/#!/";
   for (var i = 1; i < arrTemp.length - 1; i++)
      sNewUrl += arrTemp[i] + "/";
   sNewUrl += sPage;
   window.location.href = "http://" + sNewUrl;
}

【讨论】:

  • 有趣的解决方案,但不幸的是它不起作用。当我输入http://exampleone.com 时,重定向是这样的http://localhost/#!//www.exampleone.com/ 你能解释一下代码吗?谢谢。
  • @Thomasz 是的,很抱歉忘记了http:// - 现在修复了这个问题。代码“按原样”获取当前 URL 并将其拆分为 / 字符以查找域(例如 www.exampleone.com),然后使用域构造新 URL,附加 /#!/ 部分并添加之后的其余 URL 部分。一个好处是它将保留查询字符串数据,不确定其他解决方案是否会这样做。
  • @Shadow Wizard,谢谢你的努力,这个很好用!我只有最后一个请求,当您仅使用域jester04.ch 访问该站点时,不幸的是,重定向到起始页“de/news.html”不起作用,它附加了/#!/,但仅此而已。我正在尝试找出原因...
  • @Thomasz 很奇怪,尝试添加这样的警报来调试它并让我知道结果:alert(sNewUrl);
  • alert(sNewUrl);jester04.ch/#!/ - alert(sPage); 什么都不给!
【解决方案3】:

应该工作:

redirect 301 / http://www.exampleone.com/#!/news.html

redirect 301 /about.html http://www.exampleone.com/#!/about.html

exampletwo.com 相同

将它放在根文件夹中的 .htaccess 文件中。

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多