src/MvcCore/Ext/Routers/MediaAndLocalization/Routing.php
public function Route () {
		$this->internalRequest = $this->request->IsInternalRequest();
		list($requestCtrlName, $requestActionName) = $this->routeDetectStrategy();
		if (!$this->internalRequest) {
			if (!$this->redirectToProperTrailingSlashIfNecessary()) return FALSE;
			$this->prepare();
			$this->prepareMedia();
			$this->prepareLocalization();
			if (!$this->preRouteMedia()) return FALSE;
			if (!$this->preRouteLocalization()) return FALSE;
		}
		if ($this->routeByQueryString) {
			$this->queryStringRouting(
				$requestCtrlName, $requestActionName
			);
		} else {
			$this->rewriteRouting($requestCtrlName, $requestActionName);
			if ($this->currentRoute === NULL && !$this->requestLocalization) {
				$this->allowNonLocalizedRoutes = FALSE;
				if (!$this->checkLocalizationWithUrlAndRedirectIfNecessary()) 
					return FALSE;
			}
		}
		if (!$this->routeProcessRouteRedirectionIfAny()) return FALSE;
		return $this->routeSetUpDefaultForHomeIfNoMatch()
					->routeSetUpSelfRouteNameIfAny()
					->canonicalRedirectIfAny();
	}
public function Route () {
		$this->internalRequest = $this->request->IsInternalRequest();
		list($requestCtrlName, $requestActionName) = $this->routeDetectStrategy();
		if (!$this->internalRequest) {
			if (!$this->redirectToProperTrailingSlashIfNecessary()) return FALSE;
			$this->prepare();
			$this->prepareMedia();
			$this->prepareLocalization();
			if (!$this->preRouteMedia()) return FALSE;
			if (!$this->preRouteLocalization()) return FALSE;
		}
		if ($this->routeByQueryString) {
			$this->queryStringRouting(
				$requestCtrlName, $requestActionName
			);
		} else {
			$this->rewriteRouting($requestCtrlName, $requestActionName);
			if ($this->currentRoute === NULL && !$this->requestLocalization) {
				$this->allowNonLocalizedRoutes = FALSE;
				if (!$this->checkLocalizationWithUrlAndRedirectIfNecessary()) 
					return FALSE;
			}
		}
		if (!$this->routeProcessRouteRedirectionIfAny()) return FALSE;
		return $this->routeSetUpDefaultForHomeIfNoMatch()
					->routeSetUpSelfRouteNameIfAny()
					->canonicalRedirectIfAny();
	}
Route current app request by configured routes lists or by query string.
1. Check if request is targeting any internal action in internal ctrl.
2. Choose route strategy by request path and existing query string
controller and/or action values - strategy by query string or by
rewrite routes.
3. If request is not internal, redirect to possible better URL form by
configured trailing slash strategy and return `FALSE` for redirection.
4. Prepare media site version and localization properties and redirect
if necessary by media configuration or by localization configuration.
5. Try to complete current route object by chosen strategy.
6. If there was not found any rewrite route in rewrite routes strategy,
also if there is no localization in request, disallow non localized
route and re-call localization preparing method and redirect if
necessary. It means any request path will be redirected into default
localization.
7. If any current route found and if route contains redirection, do it.
8. If there is no current route and request is targeting homepage, create
new empty route by default values if ctrl configuration allows it.
9. If there is any current route completed, complete self route name by
it to generate `self` routes and canonical URL later.
10.If there is necessary, try to complete canonical URL and if canonical
URL is shorter than requested URL, redirect user to shorter version.
If there was necessary to redirect user in routing process, return
immediately `FALSE` and return from this method. Else continue to next
step and return `TRUE`. This method is always called from core routing by:
`\MvcCore\Application::Run();` => `\MvcCore\Application::routeRequest();`.
@throws \LogicException Route configuration property is missing.
@throws \InvalidArgumentException Wrong route pattern format.
@return bool