在浏览器中缩短博客文章地址

时间:2019-05-07 08:54:06

标签: .htaccess prestashop

我需要将PrestaShop中浏览器中的地址从“ csblog / post ”缩短为“ blog ”。客户正在使用博客插件“ CS Blog”,它会生成链接和地址。

csblog 是模块, 发布 是控制器。

地址计划为/ csblog / post / friendly-name

已经尝试更改插件文件中的链接和地址方案,并找到它的确切位置,但是在更改模块和控制器后-它崩溃了。它找不到帖子,也没有页面错误显示。

已经尝试在主应用程序(模块的文件夹和主文件夹中)中使用各种.htaccess重写语句。没有效果。 互联网上没有任何帮助,因为此插件似乎不太受欢迎。

这是我当前在.htaccess中的代码:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ csblog/post/([^&\]+)
RewriteRule ^blog/%1? [L]

该短地址,该如何使用.htaccess或仅通过插件进行管理?

生成链接的功能:

    {
        if (!$id_lang)
            $id_lang = Context::getContext()->language->id;
        $id_shop = Context::getContext()->shop->id;
        $url = Context::getContext()->link->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);
        $params['module'] = $module;
        $params['controller'] = $controller ? $controller : 'default';
        $dispatcher = Dispatcher::getInstance();
        $dispatcher->addRoute('cs_blog_post', '{module}{/:controller}/{id_cs_blog_post}-{category_parent}-{rewrite}.html', null, 1, array(//{module}{/:controller}
                'module' =>         array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'),
                'controller' =>     array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'),
                'category_parent' =>        array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'category_parent'),
                'id_cs_blog_post' =>                array('regexp' => '[0-9]+', 'param' => 'id_cs_blog_post'),
                'rewrite' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),
            ), array('fc' => 'module',));

        // If the module has its own route ... just use it !
        if ($dispatcher->hasRoute('module-'.$module.'-'.$controller, $id_lang))
            return Context::getContext()->link->getPageLink('module-'.$module.'-'.$controller, $ssl, $id_lang, $params);
        else
            return $url.$dispatcher->createUrl('cs_blog_post', $id_lang, $params);
    }

生成博客帖子地址的功能:

public function hookModuleRoutes($params){
'cs_blog_post' => array(
            'controller' => null,
            'rule' =>       '{module}{/:controller}/{id_cs_blog_post}-{category_parent}-{rewrite}.html',
            'keywords' => array(
                'module' =>         array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'),
                'controller' =>     array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'),
                'category_parent' =>        array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'category_parent'),
                'id_cs_blog_post' =>                array('regexp' => '[0-9]+', 'param' => 'id_cs_blog_post'),
                'rewrite' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),
            ),
            'params' => array(
                'fc' => 'module',
            ),
        ),
}

2 个答案:

答案 0 :(得分:0)

您可能要检查this expression,以确保这是否是您要执行的重定向。然后,您要在htaccess文件上添加RewriteRul。也许与此类似的东西会起作用:

varargout

enter image description here

每次更改htaccess时,您可能希望清除浏览历史记录并对其进行测试以查看其是否有效。

答案 1 :(得分:0)

路由位于模块的主文件上。

在文件上找到函数hookModuleRoutes(可能是csblog.php)。 然后您可以更改路线