Redirect Reddit URLs

Redirect any Reddit domain that isn't "old" to old.reddit.com while keeping the rest of the URL. Remove string after the last / in old.reddit.com URLs. Integrate shouldExcludePath function.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         Redirect Reddit URLs
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Redirect any Reddit domain that isn't "old" to old.reddit.com while keeping the rest of the URL. Remove string after the last / in old.reddit.com URLs. Integrate shouldExcludePath function.
// @author       You
// @match        *://*.reddit.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function removeDotsFromPath() {
        const host = window.location.host;
        const path = window.location.pathname;
        if (host === "old.reddit.com") {
            if (path.includes("/domain/")) {
                const newPath = path.replace(/\.[a-z]+$/, '');
                const newUrl = `https://${host}${newPath}${window.location.search}${window.location.hash}`;
                if (newUrl !== window.location.href) {
                    window.location.replace(newUrl);
                }
            } else if (path.includes(".")) {
                const newPath = path.replace(/\.[a-z]+$/, '');
                const newUrl = `https://${host}${newPath}${window.location.search}${window.location.hash}`;
                if (newUrl !== window.location.href) {
                    window.location.replace(newUrl);
                }
            }
        }
    }

    function shouldExcludePath(path) {
        // Define paths to exclude
        const excludePaths = ['/poll/', '/gallery/', '/media'];

        // Check if the path contains any excluded substring and is not preceded by "/r"
        return excludePaths.some(exclude => path.includes(exclude) && !path.includes('/r' + exclude));
    }

    function redirectNonOldDomains() {
        const host = window.location.host;
        const path = window.location.pathname;
        const nonOldDomainRegex = /^(?!old\.)/;
        if (nonOldDomainRegex.test(host) && !shouldExcludePath(path)) {
            window.location.href = 'https://old.reddit.com' + window.location.pathname + window.location.search + window.location.hash;
        }
    }

    function redirectToOldRedditIfNotOnOldOrRedditOrTwoLetterDomain() {
        const host = window.location.host;
        const path = window.location.pathname;

        if (
            host === "www.reddit.com" &&
            !shouldExcludePath(path)
        ) {
            redirectToOldReddit();
        } else if (host === "old.reddit.com" && shouldExcludePath(path)) {
            const newUrl = `https://www.reddit.com${path}${window.location.search}${window.location.hash}`;
            window.location.replace(newUrl);
        }
    }

    function redirectToOldReddit() {
        window.location.href = 'https://old.reddit.com' + window.location.pathname + window.location.search + window.location.hash;
    }

    // Call the functions
    removeDotsFromPath();
    redirectNonOldDomains();
    redirectToOldRedditIfNotOnOldOrRedditOrTwoLetterDomain();
})();