diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,5 @@
+0.5.6:
+	* Reject only .. and .
 0.5.5:
 	* Use filepath's isValid function for additional sanity checks
 0.5.4:
diff --git a/path.cabal b/path.cabal
--- a/path.cabal
+++ b/path.cabal
@@ -1,5 +1,5 @@
 name:                path
-version:             0.5.5
+version:             0.5.6
 synopsis:            Support for well-typed paths
 description:         Support for will-typed paths.
 license:             BSD3
diff --git a/src/Path.hs b/src/Path.hs
--- a/src/Path.hs
+++ b/src/Path.hs
@@ -117,7 +117,7 @@
      not ("~/" `isPrefixOf` filepath) &&
      not (hasParentDir filepath) &&
      not (null (normalizeDir filepath)) &&
-     not (all (== '.') filepath) &&
+     filepath /= "." && filepath /= ".." &&
      FilePath.isValid filepath
      then return (Path (normalizeDir filepath))
      else throwM (InvalidRelDir filepath)
@@ -134,7 +134,6 @@
      not ("~/" `isPrefixOf` filepath) &&
      not (hasParentDir filepath) &&
      not (null (normalizeFile filepath)) &&
-     not (all (== '.') filepath) &&
      FilePath.isValid filepath
      then return (Path (normalizeFile filepath))
      else throwM (InvalidAbsFile filepath)
@@ -154,7 +153,7 @@
      not ("~/" `isPrefixOf` filepath) &&
      not (hasParentDir filepath) &&
      not (null (normalizeFile filepath)) &&
-     not (all (== '.') filepath) &&
+     filepath /= "." && filepath /= ".." &&
      FilePath.isValid filepath
      then return (Path (normalizeFile filepath))
      else throwM (InvalidRelFile filepath)
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -156,6 +156,7 @@
      failing "///foo//bar//mu/"
      failing "///foo//bar////mu"
      failing "///foo//bar/.//mu"
+     succeeding "..." (Path ".../")
      succeeding "foo.bak" (Path "foo.bak/")
      succeeding "./foo" (Path "foo/")
      succeeding "././foo" (Path "foo/")
@@ -176,6 +177,7 @@
      failing "/"
      failing "//"
      failing "///foo//bar//mu/"
+     succeeding "/..." (Path "/...")
      succeeding "/foo.txt" (Path "/foo.txt")
      succeeding "///foo//bar////mu.txt" (Path "/foo/bar/mu.txt")
      succeeding "///foo//bar/.//mu.txt" (Path "/foo/bar/mu.txt")
@@ -195,6 +197,7 @@
      failing "///foo//bar//mu/"
      failing "///foo//bar////mu"
      failing "///foo//bar/.//mu"
+     succeeding "..." (Path "...")
      succeeding "foo.txt" (Path "foo.txt")
      succeeding "./foo.txt" (Path "foo.txt")
      succeeding "././foo.txt" (Path "foo.txt")
