I am building a front module for a website that is using 301 Moved Permanently option in SEO and URLs configuration.
Wesbite uses Prestashop 1.6.1.9.
In module, I am defining the route like this:
public static $ModuleRoutes = array(
'module-aacategories-viewmapping-mapping' => array(
'controller' => 'viewmapping',
'rule' => 'mappings{/:tree}',
'keywords' => array(
'tree' => array('regexp' => '[/_a-zA-Z0-9-\pL]*', 'param' => 'tree'),
),
'params' => array(
'fc' => 'module',
'module' => 'aacategories',
)
)
);
In browser address bar, when I enter:
site.local/en/mappings/test-map/first-test
I get:
Please use the following URL instead:
site.local/en/index.php?controller=viewmapping&tree=test-map%2Ffirst-test&module=aacategories
This latter link gives 404. However, when I append &fc=module to the url, it goes to desired page.
The problems:
1- How to force Prestashop routing to append &fc=module at the end?
2- How to keep the friendly url in address bar and not be redirected?
Note: When I change configuration in SEO and URLs to no redirection, then it works. But it is not the configuration needed in prod.
Your help is much appreciated. Thanks in advance.
The problem is you are setting public property
$php_selfin your module controller.You need to remove the property so that core front controller does not do a canonical redirect.
The code that does this is in
FrontController.phpline 378.And then does a canonical redirect if you set that property on line 401.