diff --git a/index.php b/index.php
index c582cbdaace328058aeec4f9b990aa361046f31c..6815aa43dcce4c326c4c0abc53f22040228bdbec 100644
--- a/index.php
+++ b/index.php
@@ -21,6 +21,8 @@
 *
 */
 
+$RUNTIME_NOAPPS=true;//no apps, yet
+
 require_once( 'lib/base.php' );
 require_once( 'appconfig.php' );
 require_once( 'template.php' );
@@ -48,6 +50,7 @@ if(count($errors)>0){
 		exit();
 	}
 }elseif(isset($_POST["user"])){
+	OC_APP::loadApps();
 	if( OC_USER::login( $_POST["user"], $_POST["password"] )){
 		header( "Location: ".$WEBROOT.'/'.OC_APPCONFIG::getValue( "core", "defaultpage", "files/index.php" ));
 		exit();
@@ -55,6 +58,7 @@ if(count($errors)>0){
 		OC_TEMPLATE::printGuestPage( "", "login", array( "error" => true));
 	}
 }else{
+	OC_APP::loadApps();
 	OC_TEMPLATE::printGuestPage( "", "login", array( "error" => false ));
 }
 
diff --git a/lib/installer.php b/lib/installer.php
index 965642e84764103170cd87a0369ca8ca8105124e..1222a22e71c206da3852d21a59ed3a8c61163de8 100644
--- a/lib/installer.php
+++ b/lib/installer.php
@@ -97,6 +97,9 @@ class OC_INSTALLER{
 				OC_GROUP::createGroup('admin');
 				OC_GROUP::addToGroup($username,'admin');
 				
+				//create htaccess files for apache hosts
+				self::createHtaccess();//TODO detect if apache is used
+				
 				//and we are done
 				OC_CONFIG::setValue('installed',true);
 			}
@@ -125,6 +128,19 @@ class OC_INSTALLER{
 		$query="CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
 		$result = mysql_query($query,$connection);
 	}
+	
+	/**
+	 * create .htaccess files for apache hosts
+	 */
+	private static function createHtaccess(){
+		global $SERVERROOT;
+		global $WEBROOT;
+		$content="ErrorDocument 404 /$WEBROOT/templates/404.php\n";
+		file_put_contents($SERVERROOT.'/.htaccess',$content);
+		
+		$content="deny from all";
+		file_put_contents(OC_CONFIG::getValue('datadirectory',$SERVERROOT.'/data').'/.htaccess',$content);
+	}
 }
 
 ?>
\ No newline at end of file
diff --git a/plugins/publiclink/get.php b/plugins/publiclink/get.php
index fb8a13b5417474e1ec0c1518b26af4dc24885f08..41b10484f9b62c57ee0299c31d6b61c82032198d 100644
--- a/plugins/publiclink/get.php
+++ b/plugins/publiclink/get.php
@@ -19,6 +19,13 @@ if($path!==false){
 		$subPath='';
 	}
 	$path.=$subPath;
+	if(!OC_FILESYSTEM::file_exists($path)){
+		header("HTTP/1.0 404 Not Found");
+		$tmpl = new OC_TEMPLATE( '', '404', 'guest' );
+		$tmpl->assign('file',$subPath);
+		$tmpl->printPage();
+		exit;
+	}
 	if(OC_FILESYSTEM::is_dir($path)){
 		$files = array();
 		$rootLength=strlen($root);
diff --git a/templates/404.php b/templates/404.php
index 7696d16f8e24ce30c4e51e91585ee3395f9d5125..8909db29a4033ba3eb45a6871be0f90142673f87 100644
--- a/templates/404.php
+++ b/templates/404.php
@@ -1,3 +1,13 @@
+<?php
+if(!isset($_)){//also provide standalone error page
+	require_once '../lib/base.php';
+	require( 'template.php' );
+	
+	$tmpl = new OC_TEMPLATE( '', '404', 'guest' );
+	$tmpl->printPage();
+	exit;
+}
+?>
 <div id="login">
 	<img src="<?php echo image_path("", "weather-clear.png"); ?>" alt="ownCloud" />
 	<ul>