如何仅使用代码在不使用mod_rewrite的情况下使用magento2在不使用指定文件(301重定向)的情况下添加url的斜杠。
答案 0 :(得分:0)
<?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>
<?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页面)。
最诚挚的问候!