我试图像这样重定向页面:
https://www.cdsoft.co.il/index.php?id_product=303915&controller=product&id_lang=1
我希望每个已删除id_product的网页都会重定向到我的主页:
表示:我想重定向" https://www.cdsoft.co.il/index.php?id_product=XXX"
如何在htaccess文件中执行此操作?
答案 0 :(得分:3)
我提出@Labradorcode的想法,但采用正确的方法。
在rootofps/override/controllers/front/ProductController.php
中创建一个ProductController.php的ovverride,因此你必须在该目录中创建一个新文件(对于rootofps我指的是PrestaShop的安装目录),该文件的内容写在下面:
class ProductController extends ProductControllerCore {
public function init(){
FrontController::init();
if ($id_product = (int)Tools::getValue('id_product')) {
$this->product = new Product($id_product, true, $this->context->language->id, $this->context->shop->id);
}
if (!Validate::isLoadedObject($this->product)) {
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
header('Location: '.$this->context->link->getPageLink('index', array('id_product', Tools::getValue('id_product'))));
} else {
parent::init();
}
}
}
在这种情况下,如果产品被完全删除,重定向就会起作用,而如果被禁用则不行。
创建文件后,请删除此文件rootofps/cache/class_index.php
答案 1 :(得分:0)
也许这会有所帮助。
修改文件controllers/front/ProductController.php
,行91
或查找Tools::displayError('Product not found')
,并为此进行更改:
header("Location: /");