URL Rewrites
The URL Rewrite tool lets you change any URL which is in association with any product, category, or CMS page. When the rewrite comes into effect, any links that point to the previous URL will redirect to the new address.
To quickly update URL rewrites for multiple or all products simultaneously, refer to Multiple URL Rewrites.
The terms rewrite and redirect often used interchangeably, but refer to slightly different processes. URL rewrite changes the way a URL appears in the browser. A URL redirect update the URL which is store on to the server. A URL redirect can be either temporary or permanent. Your store uses URL rewrites and redirects to make it easy for you to change the URL key of a product, category, or page and preserve existing links.
Magento2 Programmatically Create Custom URL Rewrites :
For normal users there is a common need of custom URLs for controlling their websites and they can create their custom URLs using magento2 Admin panel user interface from Marketing -> SEO & Search -> Url Rewrites
To manage URL rewrite features with custom module : If you want to create custom URLs programmatically in Magento 2 then the solution is already here in this blog. Here I am going to explain the complete process of how to create custom URL using code in controller file.
Step 1 : Create constructor file.
/** * @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 ); }
Step 2 : Create custom URL rewrite in execute method.
Like your website actual URL is “customModule/customController/customAction” but you want to execute this URL on click on “mycontrollerpath” (requested URL) then you can create by following method-
$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("customModule/customController/customAction"); /* set requested path which you want to create */ $urlRewriteModel->setRequestPath("mycontrollerpath"); /* set current store id */ $urlRewriteModel->save();
Magento2 Programmatically Create Custom URL Rewrites
So in this way you can create custom Rewrite URLs in Magento 2. Thanks!
You can also check :
https://webkul.com/blog/a-little-about-url-redirect-and-rewrite/
https://docs.magento.com/user-guide/v2.3/marketing/url-rewrite.html
1. `$this->_eavAttributeFactory = $eavAttributeFactory;` should be replaced with `$this->_urlRewriteFactory = $urlRewriteFactory;`
2. Should use `\\Magento\\UrlRewrite\\Model\\UrlRewriteFactory` instead of `\\Magento\\UrlRewrite\\Model\\ResourceModel\\UrlRewriteFactory`.