     /// - Parameter URL: The URL to find view controllers.
     /// - Returns: A match view controller or `nil` if not matched.
     public func viewControllerForURL(URL: URLConvertible) -> UIViewController? {
-        if let (URLPattern, values) = URLNavigator.matchURL(URL, from: Array(self.URLMap.keys)) {
+        if let (URLPattern, values) = URLNavigator.matchURL(URL, scheme: self.scheme, from: Array(self.URLMap.keys)) {
             let navigable = self.URLMap[URLPattern]
             return navigable?.init(URL: URL, values: values) as? UIViewController
         }


    // MARK: Utils

    /// Returns the URL by
    ///
    /// - Removing redundant trailing slash(/) on scheme

    /// - Parameter from: The array of URL patterns.
    ///
    /// - Returns: A tuple of URL pattern string and a dictionary of URL placeholder values.
    static func matchURL(URL: URLConvertible, scheme: String? = nil,
                         from URLPatterns: [String]) -> (String, [String: AnyObject])? {
        let normalizedURLString = URLNavigator.normalizedURL(URL, scheme: scheme).URLStringValue
        let URLPathComponents = normalizedURLString.componentsSeparatedByString("/") // e.g. ["myapp:", "user", "123"]

        outer: for URLPattern in URLPatterns {
            // e.g. ["myapp:", "user", "<int:id>"]
