ecco una possibile soluzione

codice:
<html>
<head>
<script>
var path_runtime1 = "";
var path_runtime2 = "";
var file_ext = "html"; // estensione del file

var path_orig = location.href;

path_orig = path_orig.replace(/^(.*\/)(.+)$/, function($0, $1) { return $1 } );

var bmw = new Array(
    "Serie 523",
    "Serie 525",
    "Serie One"
)

var toyota = new Array(
    "Corolla",
    "RAV 4",
    "Yaris"
)




function byid(id) {
    return document.getElementById(id);
}

function Cat1ToCat2(val) {

   var nodes = byid('cat2').options.length;
   while (nodes > 0) {
        byid('cat2').removeChild(byid('cat2').options[0]);
        nodes = byid('cat2').options.length;
   }


   if (val != "") {
        path_runtime1 = path_orig + val.replace(/\s/g, '');
        arr = eval(val);
        
        var c_select = byid('cat2');
        var c_option = document.createElement('option');
        c_option.setAttribute("value", "");
        c_option.innerHTML = "Seleziona";
        c_select.appendChild(c_option);
        
        for (i=0; i<arr.length; i++) {
            var c_option = document.createElement('option');
            c_option.setAttribute("value", arr[i]);
            c_option.innerHTML =  arr[i];
            c_select.appendChild(c_option);
        }
        
        byid('cat2').removeAttribute('disabled');
   }
   else {
       path_runtime1 = "";       
       byid('cat2').selectedIndex = 0;
       byid('cat2').setAttribute("disabled", "disabled");
   }
}

function goPage(val) {
    
    if (val != "") {
        path_runtime2 = path_runtime1 + "/" + val.replace(/\s/g, '') + "." + file_ext;
        location.href = path_runtime2;
    }
    else {
        path_runtime2 = path_runtime1;
    }
    
}
</script>
</head>

<body>

<select name="cat1" id="cat1" onchange="Cat1ToCat2(this.value)">
  <option value="">Seleziona</option>
  <option value="bmw">BMW</option>
  <option value="toyota">Toyota</option>
</select>

<select name="cat2" id="cat2" disabled="disabled" onchange="goPage(this.value)"></select>
</body>
</html>

ne spiego il funzionamento:

- gli array devono chiamarsi esattamente come gli attributi value della prima select (nell'esempio bmw, toyota). Le 2 option che hanno testo "seleziona" devono contenere un valore nullo;

- la seconda select aggiunge in automatico la prima opzione (infatti gli array contengono solo le opzioni non vuote, mentre poi appare anche "seleziona" come prima option);

- se tu salvi lo script ad es nella pagina www.tuosito.it/script.html e selezioni la "serie 525" nella categoria bmw la pagina sarà reindirizzata in www.tuosito.it/bmw/serie525.html (nota che lo spazio bianco tra "serie" e "525" viene eliminato).

Puoi eventualmente cambiare l'estensione di default (variabile file_ext).


Ciao