当有人打开这个链接时,我正在尝试: urlwww.example.com/invite/1234randomhashtag/url
将重定向到:
www.example.cloud/index.php?cl=register_new_user&fnc=register&hash=1234randomhashtag
现在,这可以很容易地用PHP完成。
然而,我也找到了奥苏特类。这门课能做到这一点吗?有用吗?
发布于 2016-06-19 02:45:02
Oxid不支持您通过改变最初的oxid路由机制的方式,他们将为您工作。有一种方法可以在oxid管理后端的常规设置中设置静态重定向(请参阅SEO选项卡)。但它们不支持通配符(/invite/*),就像您所需要的那样。
从理论上讲,如果您真的想在oxid模块中找到这个解决方案(为了避免对核心进行黑客攻击,并将其捆绑在一个模块中),您可以扩展几个oxid函数中的一个,然后调用oxid,然后到达基于mvc的路由逻辑,并在此时手动重定向。基本上,这可以在被调用的每个核心函数中完成,然后再路由到404页面(oxseo解码器::processSeoCall)
考虑到oxid列出的不可重载类的官方信息,您应该能够扩展oxid控制::start(甚至oxseo解码器::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] 您可以立即将该代码放在RewriteBase /下面的商店根目录中的.htaccess文件中。
我将重写规则与来自这篇文章的信息放在一起。
发布于 2016-06-18 19:27:59
OXID没有基于url部件的动态路由。
对于每个有效的SEO,数据库中都有一个SEO条目。
当有人使用您的邀请函数时,您可以生成一个SEO,并在几个月后删除Url。
或者,您需要稍微更改生成的urls,使其看起来如下:www.example.com/invite#1234随机标签,带有#,而不是/
然后解析$_SERVER["REQUEST_URI"]中的散列并设置变量或重定向到最终的URL
但是,在OXID之外,您仍然可以使用.htacess重写规则(我猜)或另一个php微框架来解决这个问题,比如在/invite/目录中运行"Slim“或"Lumen”,并将访问者重定向回商店。
https://stackoverflow.com/questions/37874774
复制相似问题