diff --git a/iframe_page.module b/iframe_page.module
index 4e97287..80415ce 100644
--- a/iframe_page.module
+++ b/iframe_page.module
@@ -145,10 +145,11 @@ function iframe_page_form(&$node) {
 function iframe_page_validate($node, &$form) {
   $url = trim($node->url);
 
-  if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) {
+  if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED) && !iframe_page_internal_url($url)) {
     form_set_error('url', t('Invalid URL.'));
   }
 
+
   $height = trim($node->height);
   if (!preg_match(IFRAME_PAGE_PERCENT_MATCHER, $height) || $height < 2) {
     form_set_error('height', t('Height must be either a percentage (like 25.1%) or a number larger than one.'));
@@ -234,6 +235,30 @@ function iframe_page_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
 }
 
 /**
+ * checks internal URL
+ */
+function iframe_page_internal_url($url) {
+  $path = explode('/', $url);
+  if ($path[0] == 'node') {
+    // check for valid nid
+    $results = db_result(db_query("SELECT nid FROM {node} where status = 1 AND nid = %d", $path[1]));
+    if (!empty($results)) {
+      return TRUE;
+    }
+  }
+  else {
+    // returns FALSE if no alias found
+    $alias = drupal_lookup_path('source', $url);
+    if ($alias) {
+      return TRUE;
+    }
+  }
+
+  return FALSE;
+}
+
+
+/**
  * Implementation of hook_theme().
  */
 function iframe_page_theme($existing, $type, $theme, $path) {
