diff --git a/app/controllers/application.rb b/app/controllers/application.rb
index a4133850..9306b9c3 100644
--- a/app/controllers/application.rb
+++ b/app/controllers/application.rb
@@ -2,7 +2,7 @@
# Likewise will all the methods added be available for all controllers.
class ApplicationController < ActionController::Base
- before_filter :connect_to_model, :setup_url_generator, :set_content_type_header
+ before_filter :connect_to_model, :setup_url_generator, :set_content_type_header, :set_robots_metatag
after_filter :remember_location, :teardown_url_generator
observer :page_observer
@@ -152,6 +152,14 @@ class ApplicationController < ActionController::Base
end
end
+ def set_robots_metatag
+ if controller_name == 'wiki' and %w(show published).include? action_name
+ @robots_metatag_value = 'index,follow'
+ else
+ @robots_metatag_value = 'noindex,nofollow'
+ end
+ end
+
def setup_url_generator
PageRenderer.setup_url_generator(UrlGenerator.new(self))
end
diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb
index cbb0fb3c..d2bec178 100644
--- a/app/controllers/wiki_controller.rb
+++ b/app/controllers/wiki_controller.rb
@@ -195,12 +195,13 @@ class WikiController < ApplicationController
end
def published
- if @web.published?
- page = wiki.read_page(@web_name, @page_name || 'HomePage')
- @renderer = PageRenderer.new(page.revisions.last)
- else
- redirect_home
- end
+ render_text("Published version of web '#{@web_name}' is not available", 404) and return if not @web.published?
+
+ page_name = @page_name || 'HomePage'
+ page = wiki.read_page(@web_name, page_name)
+ render_text("Page '#{page_name}' not found", 404) and return unless page
+
+ @renderer = PageRenderer.new(page.revisions.last)
end
def revision
diff --git a/app/views/layouts/default.rhtml b/app/views/layouts/default.rhtml
index eb1472aa..fb5e550e 100644
--- a/app/views/layouts/default.rhtml
+++ b/app/views/layouts/default.rhtml
@@ -14,7 +14,8 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-
+
+