linkDir = strings.TrimSuffix(path.Join(slash, linkDir), slash)
 
-       // Note: MakePathSanitized will lower case the path if
-       // disablePathToLower isn't set.
-       pagePath = d.PathSpec.MakePathSanitized(pagePath)
-       pagePathDir = d.PathSpec.MakePathSanitized(pagePathDir)
-       link = d.PathSpec.MakePathSanitized(link)
-       linkDir = d.PathSpec.MakePathSanitized(linkDir)
+       // if page URL is explicitly set in frontmatter,
+       // preserve its value without sanitization
+       if d.Kind != KindPage || d.URL == "" {
+               // Note: MakePathSanitized will lower case the path if
+               // disablePathToLower isn't set.
+               pagePath = d.PathSpec.MakePathSanitized(pagePath)
+               pagePathDir = d.PathSpec.MakePathSanitized(pagePathDir)
+               link = d.PathSpec.MakePathSanitized(link)
+               linkDir = d.PathSpec.MakePathSanitized(linkDir)
+       }
 
        tp.TargetFilename = filepath.FromSlash(pagePath)
        tp.SubResourceBaseTarget = filepath.FromSlash(pagePathDir)
 
                                                        BaseName: "mypage",
                                                        URL:      "/some/other/path",
                                                        Type:     output.HTMLFormat}, TargetPaths{TargetFilename: "/some/other/path/index.html", SubResourceBaseTarget: "/some/other/path", Link: "/some/other/path/"}},
+                                       {
+                                               "HTML page with URL containing double hyphen", TargetPathDescriptor{
+                                                       Kind:     KindPage,
+                                                       Dir:      "/sect/",
+                                                       BaseName: "mypage",
+                                                       URL:      "/some/other--url/",
+                                                       Type:     output.HTMLFormat}, TargetPaths{TargetFilename: "/some/other--url/index.html", SubResourceBaseTarget: "/some/other--url", Link: "/some/other--url/"}},
                                        {
                                                "HTML page with expanded permalink", TargetPathDescriptor{
                                                        Kind:              KindPage,