【问题标题】:Redirecting SEO URL with oxid functions使用氧化函数重定向 SEO URL
【发布时间】:2016-06-17 06:40:53
【问题描述】:

我正在尝试当有人打开此链接时:[url]www.example.com/invite/1234randomhashtag[/url]

将被重定向到:

www.example.cloud/index.php?cl=register_new_user&fnc=register&hash=1234randomhashtag

现在这可以通过 PHP header 轻松完成。

但是我也找到了oxutilsurl 类。这门课甚至可以做到这一点吗?有帮助吗?

【问题讨论】:

    标签: php oxid


    【解决方案1】:

    Oxid 不会通过更改原始的 oxid 路由机制以使其适合您的方式来支持您。有一种方法可以在 oxid 管理后端的常规设置中设置静态重定向(请参阅 SEO 选项卡)。但是那些不支持通配符 (/invite/*),就像您需要它们一样。

    从理论上讲,如果您真的想在 oxid 模块中为这个解决方案提供解决方案(以避免破坏核心,并将其捆绑在模块中),您可以扩展在 oxids 之前调用的几个 oxid 函数之一达到了非常自己的基于 mvc 的路由逻辑并在那时手动重定向。基本上这可以在被路由到 404 页面之前调用的每个核心函数中完成 (oxseodecoder::processSeoCall)

    考虑到来自 oxid 的官方信息,其中列出了 non overloadable classes,您应该能够扩展 oxshopcontrol::start(甚至是 oxseodecoder::processSeoCall)并添加如下内容:

    if(preg_match("/\/invite\/.*/", $_SERVER['REQUEST_URI'])){
    
        $randomHash =  basename($_SERVER['REQUEST_URI']);
        oxRegistry::getUtils()->redirect($this->getConfig()->getShopURL().'index.php?cl=register_new_user&fnc=register&hash='.$randomHash , false, 301);
    
    }
    

    无论如何,我认为最简单、最快和最高效的方法是在您的商店根目录中的 .htaccess 文件中设置 url 重定向。

    以下应该有效:

    RewriteRule    ^invite/([A-Za-z0-9-]+)/?$    index.php?cl=register_new_user&fnc=$1    [NC,L] 
    

    您可以将该代码直接放在商店根目录中的 .htaccess 文件中的 RewriteBase / 下。

    我将重写规则与来自this article 的信息放在一起。

    【讨论】:

      【解决方案2】:

      OXID 没有基于 url 部分的动态路由。
      对于每个有效的 SEO Url,数据库中都有一个 SEO URL 条目。

      当有人使用您的邀请功能时,您可以生成一个 SEO 网址,并在几个月后删除该网址。
      或者您需要稍微更改生成的 url 并使其看起来像这样: www.example.com/invite#1234randomhashtag 使用 # 而不是 /
      然后从 $_SERVER["REQUEST_URI"] 解析您的哈希并设置您的变量或重定向到最终 URL

      但是您仍然可以在 OXID 之外使用 .htacess 重写规则(我猜)或另一个 php 微框架(如在 /invite/ 目录中运行的“Slim”或“Lumen”)解决此问题,并将您的访问者重定向回商店

      【讨论】:

        猜你喜欢
        • 2015-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-30
        • 2017-04-20
        • 1970-01-01
        • 2018-04-28
        • 2012-05-22
        相关资源
        最近更新 更多