【问题标题】:Redirect to hash URL重定向到哈希 URL
【发布时间】:2012-10-13 09:32:38
【问题描述】:

我正在 wordpress 上建立一个带有 hashchange 的网站,一切正常。它只是将一个 single.php 模板文件加载到一个 div 中。

问题是我仍然可以访问我的单个网址 (http://www.mydomain.com/my-single-post)。由于它没有任何头部和样式标签,我不希望人们去那里。 google 也选择了直接链接,因为我使用 href 属性将内容加载到 div 中。

所以我的问题是:

如果有人在论坛中点击链接,比如http://www.mydomain.com/my-single-post,是否可以立即将他重定向到http://www.mydomain.com/#my-single-post?我研究过它与.htaccess有关,但我也有页面,我不希望页面名称前面有哈希。

编辑

我有一个小更新。如果这段代码从url中删除了hash-tag并重定向到一个非hash url,那么如何将这段代码反过来呢?

var current_hash = location.hash;
        current_hash = current_hash.replace(/#/,'');
    if(current_hash.length>1){
        // we have something after the #. redirect as if the # wasn't there.
        window.location.href=current_hash;
    }

【问题讨论】:

    标签: jquery ajax wordpress redirect


    【解决方案1】:

    好的,经过反复试验,我自己解决了!

    这就是我所追求的:

      // If there's a hash in the URL, do nothing
      if(window.location.hash) {
    
      } else {
      // If there isn't a '#' sign in the URL, add one, and redirect to the hash URL.
        var path = window.location.pathname.split("/")[1];
         window.location.replace('http://' + top.location.host + '#' + path);
      }
    

    可能还有其他方法可以做到这一点,即。不需要 if / else 语句,只检查是否有哈希。

    【讨论】:

    • 嗨@r1987,我想我有一个非常相似的问题,但我没有使用哈希URL。我读过 WP 不需要它,所以我使用干净的 URl 并用.pushState 更新它们。但是现在如果我按下 f5,single.php 就会变得可见。在我的情况下,您有解决方法来防止它吗?如果您能提供帮助,我将不胜感激。这是我的主题:wordpress.stackexchange.com/q/76257/24778
    【解决方案2】:

    我对 Wordpress 不是很熟悉,但它不是带有内置工具,可以为您的帖子配置所需的 URL 格式吗?我首先要看的地方是那里,并设置一个符合您需要的格式,并在 URL 中添加一个井号。

    您的另一种选择是维护您自己的 htaccess,但由于您在根目录中有一些页面应该重定向到带有哈希符号的 URL,而有些则不应该,因此您必须为恐怕手动每个页面,从长远来看,这将是一个有点痛苦的维护。

    我相信这是 Wordpress 在幕后为您做的事情,这会方便得多,但我不确定。

    【讨论】:

    • 没错,您可以更改 WordPress 管理员中的永久链接结构,但对于 SEO,我认为这不是一个好主意。哎呀,所以……重写的事情也不会进行,因为这将是一些额外的工作。但是感谢您的思考!
    【解决方案3】:

    如果请求不是 AJAX,您可以使用 PHP 标头在 my-single-post 页面上简单地进行重定向。您也可以在获取请求中将 AJAX 变量传递给 my-single-post

    <?php
    
    if($_GET["ajaxVar"]!=1){
    header("Location: http://www.mydomain.com/#my-single-post");
    }
    ?>
    

    【讨论】:

    • 这基本上是可行的,尽管我有一个用于单击、加载和 hashchange 的大功能,所以当在首页上查看时,这会使页面崩溃。我想到的是,是否可能有一种 javascript 或 jquery 方法来检查 location.hash 内部是否有 # 符号并将其重定向(或不做任何事情)到 #page。
    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2014-10-25
    • 2013-04-04
    • 1970-01-01
    相关资源
    最近更新 更多