diff --git a/files/squid/helpers/squid-url-rewrite.py b/files/squid/helpers/squid-url-rewrite.py
index 292647a3d7b46085a4dcc807aed63da510065bcd..7b4f33dbe6f5bb364b3dc9d979f7fe13259ffaa1 100755
--- a/files/squid/helpers/squid-url-rewrite.py
+++ b/files/squid/helpers/squid-url-rewrite.py
@@ -84,26 +84,35 @@ def main():
         ruleset.append( [re.compile(errorrex), True] )
         ruleset.append( [re.compile("^.*"), False] )
 
-    devel_rules = basedir + "/../devel.rules"
-    if os.path.isfile(devel_rules):
-        load_rules(ruleset, devel_rules)
-
-    # load opendsa first to let it override default rules
-    load_rules(ruleset, basedir + "/rules.d/opendsa.rules")
-    load_rules(ruleset, basedir + "/rules.d/default.rules")
-    load_rules(ruleset, basedir + "/rules.d/rstudio.rules")
-    load_rules(ruleset, basedir + "/rules.d/cplusplus.rules")
-    load_rules(ruleset, basedir + "/rules.d/python.rules")
-    load_rules(ruleset, basedir + "/rules.d/java.rules")
-    load_rules(ruleset, basedir + "/rules.d/ruby.rules")
-    load_rules(ruleset, basedir + "/rules.d/sas.rules")
-    load_rules(ruleset, basedir + "/rules.d/translate.rules")
-    load_rules(ruleset, basedir + "/rules.d/office.forms.rules")
+    # Load all rules to a temporary ruleset and then add it to the rules
+    # Failure to load rules will then lead to complete denial of service and be noticed
+    tmpruleset = list()
+    try:
+        devel_rules = basedir + "/../devel.rules"
+        if os.path.isfile(devel_rules):
+            load_rules(tmpruleset, devel_rules)
+
+        # load opendsa first to let it override default rules
+        load_rules(tmpruleset, basedir + "/rules.d/opendsa.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/default.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/rstudio.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/cplusplus.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/python.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/java.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/ruby.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/sas.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/translate.rules")
+        load_rules(tmpruleset, basedir + "/rules.d/office.forms.rules")
+
+        ruleset.extend(tmpruleset)
+        
+    except Exception as e:
+        sys.stderr.write( str( e ) )
+        sys.stderr.flush()
 
     with open(filterlog, 'a') as log:
-        try:
-            while True:
-            
+        while True:
+            try:
                 line = sys.stdin.readline().strip()
 
                 log.write('{}: {}\n'.format(datetime.datetime.now().strftime("%Y-%m-%d_%H-%M"), line))
@@ -119,8 +128,8 @@ def main():
 
                 sys.stdout.write(new_url + '\n')
                 sys.stdout.flush()
-        except Exception as e:
-            sys.stderr.write( e )
-            sys.stderr.flush()
+            except Exception as e:
+                sys.stderr.write( str( e ) )
+                sys.stderr.flush()
 
 main()