diff --git a/main/file.c b/main/file.c
index e34020ed8597a81eff5ce4557e62fa7c3fc2d770..81d51e9a257776c75a5ecba5adb95644b576c7e1 100644
--- a/main/file.c
+++ b/main/file.c
@@ -467,7 +467,7 @@ static int fileexists_test(const char *filename, const char *fmt, const char *la
 		return -1;
 	}
 
-	if (ast_language_is_prefix) { /* new layout */
+	if (ast_language_is_prefix && !is_absolute_path(filename)) { /* new layout */
 		if (lang) {
 			snprintf(buf, buflen, "%s/%s", lang, filename);
 		} else {
@@ -507,11 +507,6 @@ static int fileexists_core(const char *filename, const char *fmt, const char *pr
 		return -1;
 	}
 
-	if (is_absolute_path(filename)) {
-		ast_copy_string(buf, filename, buflen);
-		return ast_filehelper(buf, NULL, fmt, ACTION_EXISTS);
-	}
-
 	/* We try languages in the following order:
 	 *    preflang (may include dialect)
 	 *    lang (preflang without dialect - if any)