diff --git a/typo3/sysext/redirects/Classes/Service/SlugService.php b/typo3/sysext/redirects/Classes/Service/SlugService.php index d02565ef31793ea34448a03e3240923c8282cdde..aad9870acf88708649691f3621c6c1d71a03299f 100644 --- a/typo3/sysext/redirects/Classes/Service/SlugService.php +++ b/typo3/sysext/redirects/Classes/Service/SlugService.php @@ -122,7 +122,7 @@ class SlugService implements LoggerAwareInterface if ($this->autoUpdateSlugs || $this->autoCreateRedirects) { $this->createCorrelationIds($pageId, $correlationId); if ($this->autoCreateRedirects) { - $this->createRedirect($currentSlug, (int)$currentPageRecord['uid'], (int)$currentPageRecord['sys_language_uid'], (int)$pageId); + $this->createRedirect($currentSlug, $defaultPageId, (int)$currentPageRecord['sys_language_uid'], (int)$pageId); } if ($this->autoUpdateSlugs) { $this->checkSubPages($currentPageRecord, $currentSlug, $newSlug); @@ -207,7 +207,8 @@ class SlugService implements LoggerAwareInterface foreach ($subPageRecords as $subPageRecord) { $newSlug = $this->updateSlug($subPageRecord, $oldSlugOfParentPage, $newSlugOfParentPage); if ($newSlug !== null && $this->autoCreateRedirects) { - $this->createRedirect($subPageRecord['slug'], (int)$subPageRecord['uid'], $languageUid, $pageId); + $subPageId = (int)$subPageRecord['sys_language_uid'] === 0 ? (int)$subPageRecord['uid'] : (int)$subPageRecord['l10n_parent']; + $this->createRedirect($subPageRecord['slug'], $subPageId, $languageUid, $pageId); } } } diff --git a/typo3/sysext/redirects/Tests/Functional/Service/SlugServiceTest.php b/typo3/sysext/redirects/Tests/Functional/Service/SlugServiceTest.php index c8d1ba9908410fa6755ea3e98691aa4e88880e84..ddcca8458a4e118c86fe2ee7fca929f29bdab45c 100644 --- a/typo3/sysext/redirects/Tests/Functional/Service/SlugServiceTest.php +++ b/typo3/sysext/redirects/Tests/Functional/Service/SlugServiceTest.php @@ -259,8 +259,8 @@ class SlugServiceTest extends FunctionalTestCase // This redirects should exists, after rebuildSlugsForSlugChange() has run $redirects = [ - ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-3', 'target' => 't3://page?uid=31&_language=1'], - ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-3/dummy-1-3-8', 'target' => 't3://page?uid=32&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-3', 'target' => 't3://page?uid=3&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-3/dummy-1-3-8', 'target' => 't3://page?uid=8&_language=1'], ]; $this->assertSlugsAndRedirectsExists($slugs, $redirects); @@ -298,8 +298,8 @@ class SlugServiceTest extends FunctionalTestCase // This redirects should exists, after rebuildSlugsForSlugChange() has run $redirects = [ - ['source_host' => 'de.example.com', 'source_path' => '/sub-folder/dummy-1-3', 'target' => 't3://page?uid=31&_language=1'], - ['source_host' => 'de.example.com', 'source_path' => '/sub-folder/dummy-1-3/dummy-1-3-8', 'target' => 't3://page?uid=32&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/sub-folder/dummy-1-3', 'target' => 't3://page?uid=3&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/sub-folder/dummy-1-3/dummy-1-3-8', 'target' => 't3://page?uid=8&_language=1'], ]; $this->assertSlugsAndRedirectsExists($slugs, $redirects); @@ -373,10 +373,10 @@ class SlugServiceTest extends FunctionalTestCase // This redirects should exists, after rebuildSlugsForSlugChange() has run $redirects = [ - ['source_host' => 'de.example.com', 'source_path' => '/', 'target' => 't3://page?uid=5&_language=1'], - ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-2', 'target' => 't3://page?uid=6&_language=1'], - ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-3', 'target' => 't3://page?uid=7&_language=1'], - ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-2/dummy-1-2-3', 'target' => 't3://page?uid=8&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/', 'target' => 't3://page?uid=1&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-2', 'target' => 't3://page?uid=2&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-3', 'target' => 't3://page?uid=3&_language=1'], + ['source_host' => 'de.example.com', 'source_path' => '/dummy-1-2/dummy-1-2-3', 'target' => 't3://page?uid=4&_language=1'], ]; $this->assertSlugsAndRedirectsExists($slugs, $redirects);