【问题标题】:How can I redirect an address starting with #!如何重定向以#开头的地址!
【发布时间】:2013-05-20 14:08:40
【问题描述】:

我有一个新的 wordpress 网站,而不是旧的 Wix 网站。 在旧版本中,有http://example.com/#!contact/ct07/ 之类的页面地址,在新版本中,此页面位于http://example.com/contact

我尝试了 3 个重定向插件,但都没有效果(重定向、重定向编辑器、快速 301 重定向)。

我无权访问 .htaccess 文件 在重定向时,引擎似乎看不到 URL。 除了 JS 之外还有什么可管理的想法吗?我不想错过谷歌果汁

【问题讨论】:

  • 您必须在 JavaScript 中执行此操作。哈希值和之后的任何内容都不是请求 URI 的一部分,仅由用户代理在内部使用。 .htaccess 或 PHP 永远不会看到这部分。

标签: redirect


【解决方案1】:

浏览器不会将#之后的部分发送到服务器,因此服务器不知道这部分,也无法进行重定向。

所以你必须在javascript中做重定向:

if (/^#contact\//.test(document.location.hash)) {
    document.location = '/contact';
}

出于 SEO 目的,您可能还需要处理 _escaped_fragment_ 参数

【讨论】:

    【解决方案2】:

    几周前我遇到了这个问题。

    PHP在hash标签之后没有得到任何东西,因此无法解析请求url并获取hash。但是 JavaScript 可以。

    您可以在下面找到我通过标签 #! 进行 WordPress 重定向的解决方案! : (你应该把这段代码放在你活动主题的functions.php中):

    function themee_hash_redirects() {
        ?>
        <script type="text/javascript">
            function themee_hashtag_redirect( hashtag, url) {
                var locationHash = document.location.hash;
                if ( locationHash.match(/#!/img) ) {
                    if ( hashtag == locationHash ) {
                        document.location.href = url;
                    }
                }
            }
            // Examples how to use themee_hashtag_redirect
            themee_hashtag_redirect('#!contact', '/qqq/');
            themee_hashtag_redirect('#!zzz', '/aaa/');
        </script>
    <?php
    }
    add_action('wp_footer', 'themee_hash_redirects');
    

    【讨论】:

    • 欢迎来到 Stack Overflow!感谢您发布您的答案!请务必仔细阅读FAQ on Self-Promotion。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多