diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index 054c0e3..e02aed6 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -465,6 +465,10 @@ def install_app(self, ep_name, mount_point=None, mount_label=None, ordinal=None,
                 mount_point = base_mount_point + '-%d' % x
         if not h.re_path_portion.match(mount_point):
             raise exceptions.ToolError, 'Mount point "%s" is invalid' % mount_point
+        # HACK: feed and index are reserved urls
+        if (mount_point == 'feed') or (mount_point == 'index'):
+            raise exceptions.ToolError, (
+                'Mount point "%s" is reserved' % mount_point)
         if self.app_instance(mount_point) is not None:
             raise exceptions.ToolError, (
                 'Mount point "%s" is already in use' % mount_point)
diff --git a/Allura/allura/tests/model/test_project.py b/Allura/allura/tests/model/test_project.py
index 94b9e85..f880bc1 100644
--- a/Allura/allura/tests/model/test_project.py
+++ b/Allura/allura/tests/model/test_project.py
@@ -44,8 +44,19 @@ def test_project():
     c.project.install_app('Wiki', 'hello-test-mount-point')
     c.project.support_page = 'hello-test-mount-point'
     ThreadLocalORMSession.flush_all()
+    try:
+        # already installed
+        c.project.install_app('Wiki', 'hello-test-mount-point')
+    except:
+        pass
+    ThreadLocalORMSession.flush_all()
     c.project.uninstall_app('hello-test-mount-point')
     ThreadLocalORMSession.flush_all()
+    try:
+        # mount point reserved
+        c.project.install_app('Wiki', 'feed')
+    except:
+        pass
     # Make sure the project support page is reset if the tool it was pointing
     # to is uninstalled.
     assert c.project.support_page == ''
