Skip to content

Commit 677b2ec

Browse files
Merge pull request #426 from GSA/lc/1315-redirect-fix
1315 - Update redirect logic
2 parents bdb18d2 + 6fa8426 commit 677b2ec

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

libs/core-scanner/src/scans/url-scan.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export const buildUrlScanResult = (
2828
const redirectChain = response.request().redirectChain();
2929
const finalUrl = getFinalUrl(page);
3030
return {
31-
targetUrlRedirects: isRedirect(url, finalUrl),
31+
targetUrlRedirects: isRedirect(url, finalUrl, logger),
3232
finalUrl: finalUrl,
3333
finalUrlWebsite: getWithSubdomain(finalUrl),
3434
finalUrlTopLevelDomain: getTopLevelDomain(finalUrl),
@@ -50,13 +50,27 @@ const getFinalUrl = (page: Page) => {
5050
return finalUrl;
5151
};
5252

53-
function stripWww(url: string): string {
54-
return url.replace(/^www\./, '');
55-
};
53+
function cleanUrl(url: string): string {
54+
// Remove the protocol (http:// or https://)
55+
url = url.replace(/^https?:\/\//, '');
56+
57+
// Remove 'www.' if it exists
58+
url = url.replace(/^www\./, '');
59+
60+
// Remove trailing slashes
61+
url = url.replace(/\/$/, '');
62+
63+
return url;
64+
}
5665

57-
function isRedirect(initialUrl: string, finalUrl: string): boolean {
66+
function isRedirect(initialUrl: string, finalUrl: string, logger: Logger): boolean {
5867
if (!initialUrl || !finalUrl) {
68+
logger.warn('One of the URLs is missing, cannot determine redirection.');
5969
return null;
6070
}
61-
return stripWww(initialUrl) !== stripWww(finalUrl);
71+
initialUrl = cleanUrl(initialUrl);
72+
finalUrl = cleanUrl(finalUrl);
73+
logger.info({redirectCheck: {initialUrl, finalUrl}}, `Comparing initial URL: ${initialUrl} with final URL: ${finalUrl}`);
74+
logger.info(`Redirect check is: ${initialUrl !== finalUrl}`);
75+
return initialUrl !== finalUrl;
6276
}

0 commit comments

Comments
 (0)