26

I currently have User SEO URL's set to Yes in OpenCart Admin.

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

So far, all tags and SEO links are working; the command has done the desired effect.

However for the homepage and a few other links; how do I remove:

index.php?route=common/home

From the URL? Do I have to literally do a find and replace in the hardcode PHP files and risk upgrades or is there another way?

(without bloating performance i.e no poor amateur tools such as vQmod)

John Conde
  • 217,595
  • 99
  • 455
  • 496
TheBlackBenzKid
  • 26,324
  • 41
  • 139
  • 209
  • As far as I know 100% hard-code - What is worse is if the OpenCart Enviroment is run on Nginx so you need to write many manual functions - and also it is not as easy as finding and replacing that /common/home - much more functions around itself! Repped.. as I want answer too – AlphaApp May 30 '12 at 09:51
  • Have you tried removing with `htaccess`? – Leri May 30 '12 at 12:17
  • 1
    @PLB you cannot do this as I am using Nginx and aside from that .htaccess only redirects or rewrites - you still have to remove the index.php?route= in the code. – TheBlackBenzKid May 30 '12 at 15:33
  • The only way I found to do it was to [modify the code](http://stackoverflow.com/questions/7578055/how-can-i-create-custom-seo-friendly-urls-in-opencart) – nachito Jun 01 '12 at 14:52
  • You can check my answer. Solved on 1.5.5.1 – frostymarvelous Mar 07 '13 at 14:18
  • all the answers working but my opinion is to change this url type through database query – Bipul Roy Oct 30 '17 at 08:27

15 Answers15

27

To simply remove that, you can do a basic replace in /catalog/controller/common/seo_url.php

Find:

return $link;

Before it on a new line put:

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

Edit by TheBlackBenzKid: If you want full SEO just use this line instead of the above:

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

Also make sure SEO URLs is turned on in the Admin panel of the store.

TheBlackBenzKid
  • 26,324
  • 41
  • 139
  • 209
Jay Gilford
  • 15,141
  • 5
  • 37
  • 56
  • So would remove all `index.php?route=` as essentially that is what is needed. – TheBlackBenzKid Jun 06 '12 at 07:48
  • Edit, I have added another solution above. Thanks for this. – TheBlackBenzKid Jun 06 '12 at 07:50
  • 3
    What you've added will set the route sure, however this can have implications. For example, firstly you need to convert the new url back to the route when you link to it. Secondly what happens if a page has other parameters than just the route. Say you use the search page, you'll have `product/search&page=2&query=something` which is an invalid URL, so I would advise against what you've got above – Jay Gilford Jun 06 '12 at 10:33
  • I would have to create links and nginx url rewrites for all scenarios. This is fine as we have pretty much done all the parameters and query URLs. I did already know about this but a good point you raised. – TheBlackBenzKid Jun 06 '12 at 10:45
  • 1
    This does not work with 1.5.5.1 anyone got the solution? vQmod does not work either. How annoying that the author has not put it in place. – TheBlackBenzKid Mar 06 '13 at 10:29
  • You mean vQmod doesn't work with version 1.5.5.1? If so, I can assure you it does – Jay Gilford Mar 06 '13 at 10:56
  • 1
    @JayGilford I am saying the solutions above and the vQmod solution of this rewrite does not exist or work; 1.5.5.1 does not seem to be working – TheBlackBenzKid Mar 06 '13 at 10:58
  • @TheBlackBenzKid - Solution was fairly trivial - see edit above – Jay Gilford Mar 06 '13 at 13:18
  • This still does not work for me :( I have done that and using 1.5.5.1 – TheBlackBenzKid Mar 06 '13 at 14:52
  • OK fixed. You need to make SEO URLs is on in the admin panel. – TheBlackBenzKid Mar 06 '13 at 14:53
  • Correct, the class never even gets called if the seo url's are disabled – Jay Gilford Mar 06 '13 at 15:05
  • This is not a solution at all. This will mess up with the SEO URL translate inside OpenCart and the query sequence will become illegal, as someone pointed before. The solution is not inside `/catalog/controller/common/seo_url.php` but yes in `/system/libray/url.php` – Victor Schröder Mar 09 '13 at 01:52
  • @VictorSchröder Editing that file will affect the admin side as well as the catalog side. My solution is for the catalog side only and the reason why I didn't suggest the url class in the first place. Also since SEO URL's needs to be enabled to translate the URL's back into OC URL's, your solution point on it not being required to be enabled is of no relevance – Jay Gilford Mar 09 '13 at 10:09
  • Yes, it will remove the `index.php?route=common/home` in the admin too, but nothing breaks there and works perfectly, because the code handles to put the `?` in the right place. The query string is preserved in all cases, including the admin token. With the code I suggested we can get rid of the annoying `index.php?route=common/home` forever, and only it. – Victor Schröder Mar 11 '13 at 02:00
  • Another point is with the code suggested by @TheBlackBenzKid, links to pages that do not have SEO URLs field filled or does not have this field will break, even when SEO URLs **IS** enabled, which is a common case in the real world. The cart or checkout pages, for example, or a product or category with incomplete information. – Victor Schröder Mar 11 '13 at 02:00
  • I've tried implementing this solution, but there is something that bothers me. Implementing this mod will create two links pointing to my index page (home). `http://mydomain.tld/index.php?route=common/home` AND `http://mydomain.tld/`. Which is bad for SEO, I have now two links pointing to my index page. – GaryP Nov 04 '13 at 14:02
  • Why not just `return str_replace...`? – yckart Apr 16 '15 at 19:49
  • @yckart you could I guess, its just if other code (such as vqmods) place code just before the `return $link` those wouldn't affect it – Jay Gilford Apr 16 '15 at 20:35
  • @Umair - clearly the 16 people that upvoted this question compared to your downvote disagree. I'm guessing you're not using OpenCart 1.5 or using a separate SEO mod – Jay Gilford Jun 23 '15 at 12:26
  • @JayGilford m using OC 2 – Umair Ayub Jun 24 '15 at 04:02
  • 2
    @Umair right. This question was asked 2.5 years before OC2 was released – Jay Gilford Jun 24 '15 at 09:33
  • I suppose [this solution](http://stackoverflow.com/a/10902883/4094098) can also be used by vQmod in OC 2.x, no? In this case, by the way, maybe it can answer to [this question about rewriting for categories](http://stackoverflow.com/q/33238104/4094098)? – P. Mergey Jun 10 '16 at 16:26
  • 8 years later and this problem still exist??? WHAT??? – Jay Smoke Nov 16 '20 at 21:16
9

I really like Victor Schröder's solution above for it's simplicity. Thanks! I created a vQmod based on his code mods in case it would be helpful to anyone. here is the code:

<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>
8

The previous "solutions" are wrong because they are attacking the SEO URL translate. What you want is to deal with the URL generation inside OpenCart.

Let's keep it simple. Go to /system/library/url.php and look at the public function link. Replace the function with this version:

public function link($route, $args = '', $connection = 'NONSSL') {
    if ('NONSSL' == $connection) {
        $url = $this->url;
    } else {
        $url = $this->ssl;  
    }

    if ('common/home' == $route) {
        if ($args) {
            $url .= '?' . str_replace('&', '&amp;', '&' . ltrim($args, '&')); 
        }
    } else {
        $url .= 'index.php?route=' . $route;
        if ($args) {
            $url .= str_replace('&', '&amp;', '&' . ltrim($args, '&')); 
        }
    }

    foreach ($this->rewrite as $rewrite) {
        $url = $rewrite->rewrite($url);
    }

    return $url;
}

Simple like that. I can't belive why this is not in OpenCart's core.

EDIT:

I run some tests and if the SEO URLs are enabled, it becomes necessary to make one single edit in the /catalog/controller/common/seo_url.php to avoid an "Undefined index" error.

Inside public function rewrite, replace this line:

parse_str($url_info['query'], $data);

With this one:

if (isset($url_info['query'])) parse_str($url_info['query'], $data);

Now it really works.

Victor Schröder
  • 6,738
  • 2
  • 42
  • 45
  • 2
    This will work with OR without SEO URLs enabled and will preserve the query string arguments – Victor Schröder Mar 09 '13 at 01:48
  • opencart 1.5.5.1.2 - I see `myshop/index.php?route` at url – Vitaly Zdanevich Nov 04 '15 at 10:54
  • @VitalyZdanevich, what kind of OC version is that? Is it an official release? Are you sure that you have the SEO urls turned on? Anyway, I really recommend you to upgrade, because such an old version is not supported anymore and has a lot of security issues. – Victor Schröder Nov 07 '15 at 13:35
  • Hey Victor, thanks for this! I did everything to the letter but nothing happened. Does this work with 3.0? – Jay Smoke Nov 16 '20 at 20:51
3

Step 01. Enable USE SEO URL’s in your store server settings

Go to the “System” and click on “Settings”. Locate the store you want to alter and click the “Edit” link on the right. Finally click the “Server” tab and set the SEO URL’s radio to “Yes” and save your settings.

Note: The keywords will not be created for you automatically. You must also have Apache mod_rewrite turned on. Most web hosts will have this on by default. Step 3 of this tutorial will explain how to add the keywords.

Step 02. Change some content in your .htaccess file to make your homepage SEO URL Friendly

Go to your host control panel and edit your .htaccess file. Sometimes this file is hidden in order to unhide it you can click on your web host control panel file manager and tick the show hidden files option followed by the “go” button.

Once you locate the .htaccess file change the following lines:

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

To:

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %{QUERY_STRING} ^route=common/home$
RewriteRule ^index\.php$ http://www.yourwebsite.co.uk? [R=301,L]

If you do the step above your home page will change from something like this: http://yourwebsite.com/index.php?route=common/home to this: http://yourwebsite.com

Step 03. Enter SEO Keywords for URL’s manually Finally, you need to enter SEO keywords for every page, information, product and category you want to have URL rewrite. You can find the field for the SEO Keywords under the Data tab when editing and creating items.

Once you have entered the SEO Keywords your URL’s will be working.

Once you have followed all these instructions you can begin to reap the benefits of higher rankings, increased traffic and more customers.

  • I think the whole point is to be able to do this automatically not manually every time you create a product/page. – Jay Smoke Nov 16 '20 at 21:01
2

How about replacing a link in logo with <?php echo $base; ?>. It will make a link to base domain and will remove index.php?route=common/home.

shadyyx
  • 15,825
  • 6
  • 60
  • 95
Kreativi
  • 29
  • 1
2

Jay's solution doesn't work for me, after editing I get blank screen. So I made a new one:

Put the line before:

return $link;

Instead of after:

public function rewrite($link) {
Vojta
  • 71
  • 4
2

So, I'm using 1.5.5.1 and no one answer on this question solved my problem. However, combining the answers from @Jay Gilford, @TheBlackBenzKid and @rkaartikeyen I came up with a fully working solution.

Remember to enable seo urls as shown by @TheBlackBenzKid.

An explanation can be found below the code.

[php]
class ControllerCommonSeoUrl extends Controller {
    public function index() {
        // Add rewrite to url class
        if ($this->config->get('config_seo_url')) {
            $this->url->addRewrite($this);
        }

        // Decode URL
        if (isset($this->request->get['_route_'])) {
            $parts = explode('/', $this->request->get['_route_']);

            foreach ($parts as $part) {
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");

                if ($query->num_rows) {
                    $url = explode('=', $query->row['query']);

                    if ($url[0] == 'product_id') {
                        $this->request->get['product_id'] = $url[1];
                    }

                    if ($url[0] == 'category_id') {
                        if (!isset($this->request->get['path'])) {
                            $this->request->get['path'] = $url[1];
                        } else {
                            $this->request->get['path'] .= '_' . $url[1];
                        }
                    }   

                    if ($url[0] == 'manufacturer_id') {
                        $this->request->get['manufacturer_id'] = $url[1];
                    }

                    if ($url[0] == 'information_id') {
                        $this->request->get['information_id'] = $url[1];
                    }   
                } else {
                    $this->request->get['route'] = 'error/not_found';   
                }
            }

            if (isset($this->request->get['product_id'])) {
                $this->request->get['route'] = 'product/product';
            } elseif (isset($this->request->get['path'])) {
                $this->request->get['route'] = 'product/category';
            } elseif (isset($this->request->get['manufacturer_id'])) {
                $this->request->get['route'] = 'product/manufacturer/info';
            } elseif (isset($this->request->get['information_id'])) {
                $this->request->get['route'] = 'information/information';
            }else {
                $this->request->get['route'] = $this->request->get['_route_'];
            }

            if (isset($this->request->get['route'])) {
                return $this->forward($this->request->get['route']);
            }
        }
    }

    public function rewrite($link) {
        $url_info = parse_url(str_replace('&', '&', $link));

        $url = ''; 

        $data = array();

        parse_str($url_info['query'], $data);

        foreach ($data as $key => $value) {
            if (isset($data['route'])) {
                if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
                    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");

                    if ($query->num_rows) {
                        $url .= '/' . $query->row['keyword'];

                        unset($data[$key]);
                    }                   
                } elseif ($key == 'path') {
                    $categories = explode('_', $value);

                    foreach ($categories as $category) {
                        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");

                        if ($query->num_rows) {
                            $url .= '/' . $query->row['keyword'];
                        }                           
                    }

                    unset($data[$key]);
                }
            }
        }

        if ($url) {
            unset($data['route']);

            $query = '';

            if ($data) {
                foreach ($data as $key => $value) {
                    $query .= '&' . $key . '=' . $value;
                }

                if ($query) {
                    $query = '?' . trim($query, '&');
                }
            }

            return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;
        } else {
            $link = str_replace('index.php?route=', '', $link);
            return $link;
        }
    }   
}

Apparently, @Jay Gilford and @TheBlackBenzKid solve the issue of the urls being properly written on the page.

Line 113

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

But it seems to break the urls since the Controller can't find the pages and therefore reverts to the error page.

Line 38 - 40

} else {
    $this->request->get['route'] = 'error/not_found';   
}

@rkaartikeyen's solution solves this problem by setting the current route to the requested route

Line 51 - 53

else {
    $this->request->get['route'] = $this->request->get['_route_'];
}
Community
  • 1
  • 1
frostymarvelous
  • 2,786
  • 32
  • 43
1

I came late but my solution could be useful for others (tested on Opencart 2.0.3.1):

Open your MySQL console and run this query (change YOURDATABASE with your db name):

INSERT INTO `YOURDATABASE`.`url_alias` (`url_alias_id`, `query`, `keyword`) VALUES (NULL, 'common/home', ' ');

How it works:

The trick consists in adding a WHITE SPACE (' ') for the column "keyword", if you insert an empty string ('') this workaround doesn't work and the url rewriter will return again index.php?route=common/home.

Frank
  • 809
  • 1
  • 10
  • 12
  • Working at `1.5.5.1.2`, but with space at `keyword` I have `%20` at the end of my url when clicking to logo so I removed the space. – Vitaly Zdanevich Nov 04 '15 at 14:37
1

For me, the simplest way to do it:

1- Go to /system/library/url.php

2- Locate function link(

3- Above return $url; put the following line:

$url = str_replace('index.php?route=common/home', '', $url);
Shadi Alnamrouti
  • 11,796
  • 4
  • 56
  • 54
1

OpenCart 3.x

First of all in root folder of your website rename htaccess.txt into .htaccess.

Then go to System > Settings > Your store. Edit. Open tab Server and set Use SEO URLs to Yes.

Now open catalog/controller/startup/seo_url.php

Find } elseif ($key == 'path') {

Add before

} elseif ($key == 'route') {
  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");
 
  if ($query->num_rows && $query->row['keyword']) {
    $url .= '/' . $query->row['keyword'];
    unset($data[$key]);
  } else if ($data['route'] == "common/home") { 
    $url .= '/'; 
  } 

Now /index.php?route=common/home becames /

And now you can although set SEO URLs in Design > SEO URL using constructions like account/login or information/contact.

focus.style
  • 6,612
  • 4
  • 26
  • 38
0

/catalog/controller/common/seo_url.php

Open the file and replace the below code

<?php
class ControllerCommonSeoUrl extends Controller {
    public function index() {
        // Add rewrite to url class
        if ($this->config->get('config_seo_url')) {
            $this->url->addRewrite($this);
        }

        // Decode URL
        if (isset($this->request->get['_route_'])) {
            $parts = explode('/', $this->request->get['_route_']);

            foreach ($parts as $part) {

                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");

                if ($query->num_rows) {
                    $url = explode('=', $query->row['query']);

                    if ($url[0] == 'product_id') {
                        $this->request->get['product_id'] = $url[1];
                    }

                    if ($url[0] == 'category_id') {
                        if (!isset($this->request->get['path'])) {
                            $this->request->get['path'] = $url[1];
                        } else {
                            $this->request->get['path'] .= '_' . $url[1];
                        }
                    }   

                    if ($url[0] == 'manufacturer_id') {
                        $this->request->get['manufacturer_id'] = $url[1];
                    }

                    if ($url[0] == 'information_id') {
                        $this->request->get['information_id'] = $url[1];
                    }   
                } else {
                    $this->request->get['route'] = 'error/not_found';   
                }
            }

            if (isset($this->request->get['product_id'])) {
                $this->request->get['route'] = 'product/product';
            } elseif (isset($this->request->get['path'])) {
                $this->request->get['route'] = 'product/category';
            } elseif (isset($this->request->get['manufacturer_id'])) {
                $this->request->get['route'] = 'product/manufacturer/info';
            } elseif (isset($this->request->get['information_id'])) {
                $this->request->get['route'] = 'information/information';
            }else {
                $this->request->get['route'] = $this->request->get['_route_'];
            }

            if (isset($this->request->get['route'])) {
                return $this->forward($this->request->get['route']);
            }
        }
    }

    public function rewrite($link) {
        if ($this->config->get('config_seo_url')) {
            $url_data = parse_url(str_replace('&amp;', '&', $link));
            $url = ''; 

            $data = array();

            parse_str($url_data['query'], $data);
            foreach ($data as $key => $value) {

                if (isset($data['route'])) {
                    if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
                        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");

                        if ($query->num_rows) {
                            $url .= '/' . $query->row['keyword'];

                            unset($data[$key]);
                        }                   
                    } elseif ($key == 'path') {
                        $categories = explode('_', $value);

                        foreach ($categories as $category) {
                            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");

                            if ($query->num_rows) {
                                $url .= '/' . $query->row['keyword'];
                            }                           
                        }

                        unset($data[$key]);
                    }else {
                        $url .= '/'.$value;
                    }
                }
            }

            if ($url) {
                unset($data['route']);

                $query = '';

                if ($data) {
                    foreach ($data as $key => $value) {
                        $query .= '&' . $key . '=' . $value;
                    }

                    if ($query) {
                        $query = '?' . trim($query, '&');
                    }
                }

                return $url_data['scheme'] . '://' . $url_data['host'] . (isset($url_data['port']) ? ':' . $url_data['port'] : '') . str_replace('/index.php', '', $url_data['path']) . $url . $query;
            } else {
                return $link;
            }
        } else {
            return $link;
        }       
    }   
}
?>

------------------ WHERE THE CHANGE -------------------------

The below Line i added in Public Function index() also Public Function rewrite.

else {
this->request->get['route'] = $this->request->get['_route_'];
}

index() function Perform like this

  1. Get the query from htaccss "?route=$1" (Ex: the url look like site.com/shirts)
  2. so the route is shirts
  3. now the function check the "shirts" is found in url_alias table if its found then its make a get varible like index.php?categoryID=Value from url_alias Table.
  4. Or else if there are no record in url_alias table for shirts, then its checks weather it is some other pages like information or manufacturer if its found it make a get variable Example index.php?route=information/information or index.php?route=product/manufacturer/info.
  5. But its not check is it found in Layouts. So i added the Code in else block that set the route into get variable like this index.php?route=<route>
  6. So in index() functions its works fine. Like Same i did in rewrite function.
rkaartikeyan
  • 1,977
  • 9
  • 29
  • 57
0

i got this http://www.antropy.co.uk/index.php/blog/one-quick-opencart-seo-tip-to-avoid-a-duplicate-home-page/ worked for me in removing the code for my homepage

david
  • 19
  • 1
0

In file \system\library\response.php add next line at the beginning of the public function output()

if (!defined('HTTP_CATALOG')) $this->output = str_replace(array('index.php?route=common/home', '?route=common/home'), '', $this->output);
w4kskl
  • 141
  • 1
  • 6
0

In Opencart 3, if you want to redirect all ugly urls, like

index.php?route=common/home
index.php?route=account/register
index.php?route=product/product&path=244&product_id=481

You need to add your pretty urls to Admin -> Design -> SEO Urls similar to

enter image description here

then do this: In catalog/controller/startup/seo_url.php, in function index, after

if ($this->config->get('config_seo_url')) {
   $this->url->addRewrite($this);
}

add this

if (isset($this->request->get['route'])) {
    if (DOMAIN_ROOT . $this->request->server['REQUEST_URI'] != $this->rewrite(DOMAIN_ROOT . $this->request->server['REQUEST_URI'])) {
        $this->response->redirect($this->rewrite(DOMAIN_ROOT . $this->request->server['REQUEST_URI']));
    }
}
elseif (strpos($this->request->server['REQUEST_URI'], 'index') !== false) {
    $this->response->redirect(HTTPS_SERVER);
}

Add last step is to define DOMAIN_ROOT in config.php with

define('DOMAIN_ROOT', 'https://www.somedomain.org'); // no slash, no subfolder

It works very well for me

Gabriel Vasile
  • 2,110
  • 1
  • 14
  • 26
-1

To remove index.php?route= from urls I simply recommend to edit .htaccess file.

Just add this:

RewriteCond %{THE_REQUEST} \ /index\.php\?_route_=?([^&\ ]*)
RewriteRule ^ /%1? [L,R]

I encounter no problems whatsoever. Just remember that you need to have RewriteEngine enabled. Look for this line: RewriteEngine On. If not present, past it before above code.

freewheeler
  • 1,306
  • 2
  • 12
  • 24