diff --git a/.htaccess b/.htaccess
index 11520d743dc1b6842db59ab9d986f50cbef25b15..96ecb685d5235acaa1c31dfcfae5a88ce9793d5b 100644
--- a/.htaccess
+++ b/.htaccess
@@ -11,5 +11,7 @@ php_value memory_limit 512M
 <IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
+RewriteRule ^.well-known/carddav /apps/contacts/carddav.php [R]
+RewriteRule ^.well-known/caldav /apps/calendar/caldav.php [R]
 </IfModule>
 Options -Indexes
diff --git a/lib/setup.php b/lib/setup.php
index 3e46a3dcc9a863e8cebd8f76ce23823b71f8d69c..3dca3c509189999a1f8bc540000c6462f810539b 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -296,15 +296,21 @@ class OC_Setup {
 	 * create .htaccess files for apache hosts
 	 */
 	private static function createHtaccess() {
+		$content = "ErrorDocument 403 ".OC::$WEBROOT."/core/templates/403.php\n";//custom 403 error page
 		$content = "ErrorDocument 404 ".OC::$WEBROOT."/core/templates/404.php\n";//custom 404 error page
 		$content.= "<IfModule mod_php5.c>\n";
 		$content.= "php_value upload_max_filesize 512M\n";//upload limit
 		$content.= "php_value post_max_size 512M\n";
-		$content.= "SetEnv htaccessWorking true\n";
+		$content.= "php_value memory_limit 512M\n";
+		$content.= "<IfModule env_module>\n";
+		$content.= "  SetEnv htaccessWorking true\n";
+		$content.= "</IfModule>\n";
 		$content.= "</IfModule>\n";
 		$content.= "<IfModule mod_rewrite.c>\n";
 		$content.= "RewriteEngine on\n";
 		$content.= "RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]\n";
+		$content.= "RewriteRule ^.well-known/carddav /apps/contacts/carddav.php [R]\n";
+		$content.= "RewriteRule ^.well-known/caldav /apps/calendar/caldav.php [R]\n";
 		$content.= "</IfModule>\n";
 		$content.= "Options -Indexes\n";
 		@file_put_contents(OC::$SERVERROOT.'/.htaccess', $content); //supress errors in case we don't have permissions for it