使用magento2在网址中添加斜杠

时间:2018-10-29 08:20:39

标签: php magento

如何仅使用代码在不使用mod_rewrite的情况下使用magento2在不使用指定文件(301重定向)的情况下添加url的斜杠。

1 个答案:

答案 0 :(得分:0)

app / code / your_vendor / your_module / etc / frontend / events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="controller_action_predispatch_cms_index_index">
        <observer name="unique_name" instance="your_vendor\your_module\Observer\CustomPredispatch" />
    </event>
</config>

app / code / your_vendor / your_module / Observer / CustomPredispatch.php

<?php

namespace your_vendor\your_module\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;

class CustomPredispatch implements ObserverInterface
{
    public function execute(Observer $observer)
    {
        $request = $observer->getEvent()->getRequest();
        if(substr($request->getRequestUri(), -1) !== '/'){
            $observer->getEvent()->getControllerAction()->getResponse()->setRedirect($request->getRequestUri() . '/', 301)->sendResponse();
        }
    }

}

这将适用于主页(包括将商店代码添加到Urls)。

如果您希望它适用于所有请求,则应将controller_action_predispatch_cms_index_index更改为controller_action_predispatch。

类似地,如果您希望它适用于特定的路由/控制器/操作,则必须相应地替换cms_index_index。

例如,要使其与所有cms页面一起使用,请将controller_action_predispatch_cms_index_index更改为controller_action_predispatch_cms_page_view或仅将controller_action_predispatch_cms更改为首页和其他cms页面)。

最诚挚的问候!