Skip to content

Commit b1a2a29

Browse files
committed
#25603 Fix removing query string from url after redirect
Cover with integration tests cases with external URLs as target path
1 parent f63475c commit b1a2a29

File tree

3 files changed

+76
-3
lines changed

3 files changed

+76
-3
lines changed

dev/tests/integration/testsuite/Magento/UrlRewrite/Controller/UrlRewriteTest.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ public function testMatchUrlRewrite(
4444
$location = $response->getHeader('Location')->getFieldValue();
4545
$this->assertStringEndsWith(
4646
$redirect,
47-
$location,
48-
'Invalid location header'
47+
$location
4948
);
5049
}
5150
}
@@ -110,6 +109,30 @@ public function requestDataProvider(): array
110109
'request' => '/page-similar-query-param/?param2=1',
111110
'redirect' => '/page-e?param1=1&param2=1',
112111
],
112+
'Use Case #13: Rewrite: page-external1 --(301)--> http://example.com/external;'
113+
. 'Request: page-external1?param1=1 --(301)--> http://example.com/external (not fills get params)' => [
114+
'request' => '/page-external1?param1=1',
115+
'redirect' => 'http://example.com/external',
116+
],
117+
'Use Case #14: Rewrite: page-external2/ --(301)--> https://example.com/external2/;'
118+
. 'Request: page-external2?param2=1 --(301)--> https://example.com/external2/ (not fills get params)' => [
119+
'request' => '/page-external2?param2=1',
120+
'redirect' => 'https://example.com/external2/',
121+
],
122+
'Use Case #15: Rewrite: page-external3 --(301)--> http://example.com/external?param1=value1;'
123+
. 'Request: page-external3?param1=custom1&param2=custom2 --(301)--> '
124+
. 'http://example.com/external?param1=value1'
125+
. ' (fills get param from target path)' => [
126+
'request' => '/page-external3?param1=custom1&param2=custom2',
127+
'redirect' => 'http://example.com/external?param1=value1',
128+
],
129+
'Use Case #16: Rewrite: page-external4/ --(301)--> https://example.com/external2/?param2=value2;'
130+
. 'Request: page-external4?param1=custom1&param2=custom2 --(301)--> '
131+
. 'https://example.com/external2/?param2=value2 '
132+
. ' (fills get param from target path)' => [
133+
'request' => '/page-external4?param1=custom1&param2=custom2',
134+
'redirect' => 'https://example.com/external2/?param2=value2',
135+
],
113136
];
114137
}
115138
}

dev/tests/integration/testsuite/Magento/UrlRewrite/_files/url_rewrite.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,39 @@
155155
->setStoreId($storeID)
156156
->setDescription('From page-similar-query-param with trailing slash to page-e with query param');
157157
$rewriteResource->save($rewrite);
158+
159+
$rewrite = $objectManager->create(UrlRewrite::class);
160+
$rewrite->setEntityType('custom')
161+
->setRequestPath('page-external1')
162+
->setTargetPath('http://example.com/external')
163+
->setRedirectType(OptionProvider::PERMANENT)
164+
->setStoreId($storeID)
165+
->setDescription('From page-external to external URL');
166+
$rewriteResource->save($rewrite);
167+
168+
$rewrite = $objectManager->create(UrlRewrite::class);
169+
$rewrite->setEntityType('custom')
170+
->setRequestPath('page-external2/')
171+
->setTargetPath('https://example.com/external2/')
172+
->setRedirectType(OptionProvider::PERMANENT)
173+
->setStoreId($storeID)
174+
->setDescription('From page-external with trailing slash to external URL');
175+
$rewriteResource->save($rewrite);
176+
177+
$rewrite = $objectManager->create(UrlRewrite::class);
178+
$rewrite->setEntityType('custom')
179+
->setRequestPath('page-external3')
180+
->setTargetPath('http://example.com/external?param1=value1')
181+
->setRedirectType(OptionProvider::PERMANENT)
182+
->setStoreId($storeID)
183+
->setDescription('From page-external to external URL');
184+
$rewriteResource->save($rewrite);
185+
186+
$rewrite = $objectManager->create(UrlRewrite::class);
187+
$rewrite->setEntityType('custom')
188+
->setRequestPath('page-external4/')
189+
->setTargetPath('https://example.com/external2/?param2=value2')
190+
->setRedirectType(OptionProvider::PERMANENT)
191+
->setStoreId($storeID)
192+
->setDescription('From page-external with trailing slash to external URL');
193+
$rewriteResource->save($rewrite);

dev/tests/integration/testsuite/Magento/UrlRewrite/_files/url_rewrite_rollback.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,21 @@
3131
->create(\Magento\UrlRewrite\Model\ResourceModel\UrlRewriteCollection::class);
3232
$collection = $urlRewriteCollection
3333
->addFieldToFilter('entity_type', 'custom')
34-
->addFieldToFilter('target_path', ['page-a/', 'page-a', 'page-b', 'page-c', 'page-d?param1=1', 'page-e?param1=1'])
34+
->addFieldToFilter(
35+
'target_path',
36+
[
37+
'page-a/',
38+
'page-a',
39+
'page-b',
40+
'page-c',
41+
'page-d?param1=1',
42+
'page-e?param1=1',
43+
'http://example.com/external',
44+
'https://example.com/external2/',
45+
'http://example.com/external?param1=value1',
46+
'https://example.com/external2/?param2=value2'
47+
]
48+
)
3549
->load()
3650
->walk('delete');
3751

0 commit comments

Comments
 (0)