Добавьте косую черту в URL с помощью magento2 - PullRequest
0 голосов
/ 29 октября 2018

как добавить косую черту в URL без указанного файла (перенаправление 301) с magento2 без использования mod_rewrite, только в коде.

1 Ответ

0 голосов
/ 15 мая 2019

Приложение / код / ​​your_vendor / your_module / и т.д. / интерфейс / 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>

Приложение / код / ​​your_vendor / your_module / наблюдатель / 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();
        }
    }

}

Это будет работать для домашней страницы (включая добавление кода магазина в URL).

Если вы хотите, чтобы он работал для всех запросов, вы должны изменить 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).

С наилучшими пожеланиями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...