How To Create A Custom Route

When accessing the URL https://www.site.com/mypage LiteCart looks for a document in the folder pages/ named mypage.inc.php. Sometimes when that is not enough, you can add custom routes by creating a new routing module placed in includes/routes/.

You can rewrite the URL and/or you can set up URL aliases.

URL Rewrite Example

In this example, we are creating a custom URL for mypage depending on the selected language.

includes/routes/url_mypage.inc.php:


<?php
  class url_mypage {  // The class name url_{pagename} must match the page filename -> pages/{pagename}.inc.php

  // For incoming traffic.
    function routes() {
      return [
        [
          'pattern' => '#^my-fantastic-url-(\d+)$#',  // This is the regex pattern for resolving a rewritten url back to a resource.
          'page' => 'mypage',  // This is the target document meaning pages/mypage.inc.php
          'params' => '',  // Establish URL query parameters based on the result of the regex. E.g. page_id=$1 etc.
          'redirect' => true,  // If accessing a non rewritten url, let's do a 301 redirect.
        ],
      ];
    }

  // For outgoing traffic.
    function rewrite($parsed_link, $language_code) {

      switch($language_code) {
        case 'de':
          $parsed_link['path'] = 'mein-fantastisches-url';
          break;
        default:
          $parsed_link['path'] = 'my-fantastic-url';
          break;
      }

      return $parsed_link;
    }
  }

Alias Routes Example

includes/routes/url_old_oscommerce_links.inc.php:


<?php
  class url_old_oscommerce_links {

    function routes() {
      return [
        [
          'pattern' => '#^.*-c-([0-9]+).html$#',
          'page' => 'category',
          'params' => 'category_id=$1',
          'redirect' => false,
        ],
        [
          'pattern' => '#^.*-p-([0-9]+).html$#',
          'page' => 'product',
          'params' => 'product_id=$1',
          'redirect' => false,
        ],
      ];
    }
  }

Please note incoming URL query parameters are not parsed when processing a page request.

Revisions

Top Editors
Recently Edited Articles