📜  截断 url 重写 magento 2 数据库 - PHP (1)

📅  最后修改于: 2023-12-03 15:25:44.073000             🧑  作者: Mango

截断 URL 重写 Magento 2 数据库 - PHP

在 Magento 2 中,URL 重写是一种很重要的功能,它可以让我们修改或优化网站的URL。这意味着我们可以将不好的URL改成更短、更好的URL,从而增加网站的可访问性和可用性。在 Magento 2 中,URL 重写是通过重写数据库中的表来实现的。在本文中,我们将讨论如何截断 URL 以进行重写。

1. 截断 URL

截断 URL 是指获取 URL 中的一部分,并将其保存到数据库中。在 Magento 2 中,我们可以通过截断 URL 来实现 URL 重写。截断 URL 的过程非常简单,我们只需将 URL 划分为要截断的部分和要保留的部分即可。

以下是一个简单的截断 URL 的示例代码段:

$url = "https://www.example.com/category/product.html";
$split_url = explode('/', $url);

$base_url = $split_url[0] . '//' . $split_url[2];
$product_url = $split_url[4];

echo $base_url; // 输出: https://www.example.com
echo $product_url; // 输出: product.html

在上面的代码中,我们将 URL 划分为两部分:基础 URL 和产品 URL,并将它们保存到变量中。我们使用了 PHP 的 explode() 函数来将字符串分割成数组,然后通过数组索引访问并获取所需的部分。

2. 重写 Magento 2 数据库

现在我们已经学习了如何截断 URL,让我们来看看如何在 Magento 2 中重写数据库。在 Magento 2 中,我们可以使用 UrlRewrite 表重写 URL。可以在 Magento 2 数据库中使用以下 SQL 语句查看 UrlRewrite 表:

SELECT * FROM url_rewrite;

在 Magento 2 中,可以使用以下代码片段创建一个 UrlRewrite 条目:

<?php

use Magento\UrlRewrite\Model\UrlRewriteFactory;
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\App\Request\Http;
use Magento\Framework\Controller\ResultFactory; 

class Test extends Action
{
    protected $_urlRewriteFactory;
    protected $_request;
    protected $_resultFactory;
 
    public function __construct(
        Context $context,
        Http $request,
        UrlRewriteFactory $urlRewriteFactory,
        ResultFactory $resultFactory
        )
    {
        $this->_urlRewriteFactory = $urlRewriteFactory;
        $this->_request = $request;
        $this->_resultFactory = $resultFactory;
        parent::__construct($context);
    }
 
    public function execute()
    {
        $urlRewrite = $this->_urlRewriteFactory->create();
        $urlRewrite->setEntityType('custom')
                   ->setEntityId(1)
                   ->setRequestPath('some-url.html')
                   ->setTargetPath('some-target-url.html')
                   ->setRedirectType(301);
        $urlRewrite->save();
 
        $resultRedirect = $this->_resultFactory->create(ResultFactory::TYPE_REDIRECT);
        $resultRedirect->setUrl('https://www.example.com');
        return $resultRedirect;
    }
}

在上面的代码中,我们创建了一个名为 Test 的 PHP 类,并注入了 UrlRewriteFactory。我们使用 setEntityType() 方法设置实体类型,并使用 setEntityId() 设置实体 ID。然后,我们使用 setRequestPath() 方法设置请求路径,并使用 setTargetPath() 方法设置目标路径。最后,我们使用 setRedirectType() 方法设置重定向类型。当我们调用 save() 方法时,它会将上述这些值保存到 UrlRewrite 表中。

结论

在 Magento 2 中,可以使用简单的 PHP 代码来截断 URL 以进行重写。通过使用 UrlRewrite 表,可以向 Magento 2 数据库添加重写条目。我希望这篇文章对你有所帮助。