diff --git a/require_login.admin.inc b/require_login.admin.inc
index b6aa8c5..7746ecc 100644
--- a/require_login.admin.inc
+++ b/require_login.admin.inc
@@ -11,8 +11,7 @@ function require_login_admin_settings() {
     '#type' => 'textarea',
     '#title' => t('Excluded paths'),
     '#default_value' => variable_get('require_login_excluded_paths'),
-    '#description' => t('Users will be able to access these paths without logging in.
-      One path per line.'),
+    '#description' => t("Specify pages by using their paths. Enter one path per line. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '<front>')),
   );
 
   $form['#submit'][] = 'require_login_admin_settings_submit';
diff --git a/require_login.module b/require_login.module
index a445e40..f61ec68 100644
--- a/require_login.module
+++ b/require_login.module
@@ -86,10 +86,15 @@ function _require_login_is_exception($request_uri) {
   }
 
   // Excluded paths.
-  $excluded_paths = explode("\n", variable_get('require_login_excluded_paths'));
-  if (in_array(trim($request_uri, '/'), $excluded_paths)) {
-    return TRUE;
+  // Convert path to lowercase. This allows comparison of the same path with
+  // different case. Ex: /Page, /page, /PAGE.
+  $pages = drupal_strtolower(variable_get('require_login_excluded_paths', ''));
+  // Convert the Drupal path to lowercase.
+  $path = drupal_strtolower(drupal_get_path_alias($_GET['q']));
+  // Compare the lowercase internal and lowercase path alias (if any).
+  $page_match = drupal_match_path($path, $pages);
+  if ($path != $_GET['q']) {
+    $page_match = $page_match || drupal_match_path($_GET['q'], $pages);
   }
-
-  return FALSE;
+  return $page_match;
 }
