用编程的方式重写 URL

在 Magento2 中,如果网站想有很多的业务流程,那么用编程的方式重写 URL 是一个很好的解决方案。重新向的目的是通过编程的方式生成 301 重定向。

什么是 URL 重定向?

在 SEO 中 URL 重定向是很重要的一项,它可以导航到店主想让你去的任意链接。有两种主要类型的重定向:301 和 302 。所以,当你想要新建一个站点时,如果想知道如何高效的处理当前用户,那么创建一个搜索的 301 重定向是一个不错的选择。

第一步:生成构造函数文件

/**
* @var \Magento\UrlRewrite\Model\UrlRewriteFactory
*/
protected $_urlRewriteFactory;

/**
* @param Context $context
* @param \Magento\UrlRewrite\Model\UrlRewriteFactory $urlRewriteFactory
*/
public function __construct(
    Context $context,
    \Magento\UrlRewrite\Model\UrlRewriteFactory $urlRewriteFactory
) {
    $this->_urlRewriteFactory = $urlRewriteFactory;
    parent::__construct(
        $context
    );
}

第二步:在执行函数中插入自定义的重写 URL

如果原来的网站是 www.example.com/customModule/customController/customAction ,而想要重定向的 URL 是 www.example.com/xyz ,可以参考一下代码

$urlRewriteModel = $this->_urlRewriteFactory->create()
/* set current store id */
$urlRewriteModel->setStoreId(1);
/* this url is not created by system so set as 0 */
$urlRewriteModel->setIsSystem(0);
/* unique identifier - set random unique value to id path */
$urlRewriteModel->setIdPath(rand(1, 100000));
/* set actual url path to target path field */
$urlRewriteModel->setTargetPath("www.example.com/customModule/customController/customAction");
/* set requested path which you want to create */
$urlRewriteModel->setRequestPath("www.example.com/xyz");
/* set current store id */
$urlRewriteModel->save();

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: