Necesito agregar una barra en caso de que no haya una ruta en la URL antes de "?" parámetros de consulta
Por ejemplo, https://www.example.com?foo=bar resulta ser https://www.example.com/?foo=bar
Este cambio solo necesito hacerlo una vez en una url:
https://www.example.com?foo=bar&url=https://www.example.com?aa=b será https://www.example.com/?foo=bar&url=https://www. ejemplo.com?aa=b
Además, en caso de que haya una ruta, no es necesario agregar esta barra inclinada https://www.example.com/path?foo=bar seguirá siendo https://www.example.com/path?foo=bar
Realmente apreciaría la ayuda.
Utilice la interfaz de URL integrada al crear URL y las obtendrá correctamente, especialmente si utiliza los parámetros de búsqueda adjuntos ( URLSearchParams searchParams para manipular los parámetros de consulta.
const base = "https://example.com"; const url1 = new URL(base); url1.searchParams.append("foo", "bar"); console.log(url1.toString()); // ➡ https://example.com/?foo=bar // Query parameters will be encoded correctly url1.searchParams.append("url", "https://www.example.com?aa=b"); console.log(url1.toString()); // ➡ https://example.com/?foo=bar&url=https%3A%2F%2Fwww.example.com%3Faa%3Db const url2 = new URL("/path", base); url2.searchParams.append("foo", "bar"); console.log(url2.toString()); // ➡ https://example.com/path?foo=bar url = 'https://www.example.com?foo=bar&url=https://www.example.com?aa=b' url = url.match(/com\/\?/) ? url : url.replace('com?', 'com/?') console.log(url) url = 'https://www.example.com/?foo=bar&url=https://www.example.com?aa=b' url = url.match(/com\/\?/) ? url : url.replace('com?', 'com/?') console.log(url)