BUGFIX: When finding an old page in the 404 handler, favour existing subpages over historical ones.

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@104468 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Sam Minnee 2010-05-10 06:43:06 +00:00
parent 2bc1af1752
commit 4fd6d3ad39
3 changed files with 3 additions and 7 deletions

View File

@ -150,7 +150,7 @@ class ModelAsController extends Controller implements NestedController {
static function find_old_page($URLSegment,$parentID = 0, $ignoreNestedURLs = false) {
$URLSegment = Convert::raw2sql($URLSegment);
$useParentIDFilter = SiteTree::nested_urls() && !$ignoreNestedURLs;
$useParentIDFilter = SiteTree::nested_urls() && $parentID;
// First look for a non-nested page that has a unique URLSegment and can be redirected to.
if(SiteTree::nested_urls()) {
@ -177,12 +177,6 @@ class ModelAsController extends Controller implements NestedController {
// Run the page through an extra filter to ensure that all decorators are applied.
if(SiteTree::get_by_link($oldPage->RelativeLink())) return $oldPage;
}
// Otherwise, if nested URLs is enabled, look for a page anywhere in the site that may be
// left from pre-nested-URLs days
if(SiteTree::nested_urls() && !$ignoreNestedURLs && $parentID == 0) {
return self::find_old_page($URLSegment, $parentID, true);
}
}
}

View File

View File

@ -5,6 +5,8 @@
*/
class ModelAsControllerTest extends FunctionalTest {
static $fixture_file = 'sapphire/tests/ModelAsControllerTest.yml';
protected $autoFollowRedirection = false;
protected $orig = array();