从 OpenCart 中删除索引.php?route=common/home

2022-08-30 16:30:58

我目前在 OpenCart Admin 中已设置为“是”。User SEO URL's

System -> Settings -> Store -> Server -> User SEO URL's

到目前为止,所有标签和SEO链接都在工作;该命令已完成所需的效果。

但是,对于主页和其他一些链接;如何删除:

索引.php路线=普通/家

从网址?我是否必须在硬编码PHP文件中进行查找和替换并承担升级风险,还是有其他方法?

(没有膨胀的性能,即没有可怜的业余工具,如vQmod)


答案 1

要简单地删除它,您可以在/catalog/controller/common/seo_url.php

找到:

return $link;

它之前在新行上放:

$link = str_replace('index.php?route=common/home', '', $link);

由TheBlackBenzKid编辑:如果你想要完整的SEO,只需使用这行而不是上面的:

$link = str_replace('index.php?route=', '', $link);

还要确保在商店的管理面板中打开了SEO URL。


答案 2

我真的很喜欢Victor Schröder上面的解决方案,因为它的简单性。谢谢!我根据他的代码mods创建了一个vQmod,以防万一它对任何人都有帮助。这是代码:

<modification>

    <file name="system/library/url.php">
        <operation>
            <search position="before"><![CDATA[$url .= 'index.php?route=' . $route;]]></search>
            <add><![CDATA[
                if ('common/home' == $route) {
                    if ($args) {
                        $url .= '?' . str_replace('&', '&amp;', '&' . ltrim($args, '&'));
                    }
                } else {
            ]]></add>
        </operation>
        <operation>
            <search position="before"><![CDATA[foreach ($this->rewrite as $rewrite) {]]></search>
            <add><![CDATA[
                }
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/common/seo_url.php">
        <operation>
            <search position="replace"><![CDATA[parse_str($url_info['query'], $data);]]></search>
            <add><![CDATA[
                if (isset($url_info['query'])) parse_str($url_info['query'], $data);
            ]]></add>
        </operation>
    </file>

</modification>

推荐