【问题标题】:WordPress add_rewrite_rule and routing to same pageWordPress add_rewrite_rule 和路由到同一页面
【发布时间】:2017-07-14 11:24:55
【问题描述】:

感谢您阅读此问题。

我不记得我是怎么做到的,而且 GIT 存储库没有提供任何线索。

我有一个 WordPress 网站,其中有重写规则,例如

add_rewrite_rule(
    'about',
    'index.php',
    'top'
);

然后转到 index.php,主页。

不知何故我让它工作了,所以最终显示的网址是

/关于

但它会显示主页。这就是我想要的,开发站点可以工作,但生产站点不能。

所以问题是我是怎么做到的

http://www.thesite.com/ http://www.thesite.com/about

显示相同的页面。我记得做了一些其他步骤,但找不到。

谢谢...

【问题讨论】:

    标签: php wordpress url url-rewriting routing


    【解决方案1】:

    我只是记录这一点,因为它真的让我很难过,现在我与世界和平相处......至少这个世界。

    欺骗固定链接

    如何使您有多个网址转到同一页面,以使您的 wordpress 网站看起来像一个 SAP。

    意思是类似的网址

    http://www.asdf.com

    http://www.asdf.com/about

    解析到相同的 url,然后用 JS 你可以用 JavaScript 做一些花哨的事情。

    代码

    使用 add_rewrite_rule 将 url 重写为页面部分的主页。我的函数文件中的以下脚本也使用高级自定义字段动态编写规则,但这仅用于此实现。

    <?php
    
    add_action('init', 'all_pages_home');
    function all_pages_home()
    {
    
        add_rewrite_rule(
            'home',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'about-us',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'about',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'portfolio',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'team',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'our-team',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'contact',
            'index.php',
            'top'
        );
    
        add_rewrite_rule(
            'press',
            'index.php',
            'top'
        );
    
    
        // custom rewrites for all team members
        // this accesses ACF and dynamically writes these out based on a field url_path
        $team_members = get_post_meta( 359, 'section_team', true );
        if( $team_members ):
            for( $i = 0; $i < $team_members; $i++ ) {
                $url_path = esc_html( get_post_meta( 359, 'section_team_' . $i . '_url_path', true ) );
                if($url_path <> ''):
    
                    add_rewrite_rule(
                        $url_path,
                        'index.php',
                        'top'
                    );
    
                endif;
    
            }
        endif;
    
    
        flush_rewrite_rules();
    }
    

    在 Javascript 文件中,您可以执行类似的操作

    <script type="text/javascript">
    
        var pathName = window.location.pathname;
        var pathNameClean = replaceAll(pathName, '/', '' );
        var isTeamMember = true;
        var arrSections = ['home','about-us','about','portfolio','team','contact','press'];
    
        for (i = 0; i < arrSections.length; i++) {
            if(arrSections[i] === pathNameClean){
                isTeamMember = false;
                break;
            }
        }
    
    </script>
    

    然后

    <script type="text/javascript">
    var anchorHref = '#' + pathNameClean;
    
    $('html, body').stop().animate({
        scrollTop: $(anchorHref).offset().top - 64
    }, 1500, 'easeInOutExpo');
    </script>
    

    这将滚动到页面中的正确位置

    现在它一下子变得有点古怪和混乱。

    第 1 步:转到您的固定链接。

    设置为帖子名称

    保存更改...

    第 2 步:下载您的 .htaccess 文件。

    第 3 步:将永久链接更改为普通链接

    第 4 步:上传您创建的 .htaccsss 文件。

    重要!!!! 不要更新您网站上的永久链接!

    【讨论】:

      【解决方案2】:

      尝试保存您的永久链接设置。在 WordPress 管理菜单上,转到设置 -> 永久链接,然后单击保存更改。

      您不必对该页面上的设置进行任何更改,但单击保存按钮会导致 WordPress 还将所有重写规则(来自 add_rewrite_rule())保存到站点的 .htaccess 文件中。

      【讨论】:

      • 我试过了。我记得这在路由方面还有其他一些事情要做。它有点像 SAP。 add_rewrite_rule('about', 'index.php', 'top');带你到主页,但我需要它去 /about 但显示主页。太奇怪了,它在开发中起作用。我在服务器上做了一些事情......只是不记得它是什么......
      • 好吧,那我不确定。相同的代码适用于我在一个简单的网站上。我不确定还有什么可能导致它即使在保存永久链接后也无法工作。
      猜你喜欢
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多