Как сказал Пол Томблин, + жаден; то есть он соответствует столько, сколько может.
^(.+[^/])/?$
говорит ему, чтобы оно совпадало с чем угодно, за которым следует символ, который не является /, а затем необязательный /. Это имеет эффект не захвата трейлинг / .
Наиболее вероятная причина, по которой ваши CSS и Javascript не работают, это то, что вы используете относительный путь, например, src = "my.js". Когда есть косая черта, он выглядит как каталог, поэтому ваш браузер будет искать /location/kings-lynn/my.js. Вы можете исправить это, просто используя абсолютный путь к вашим файлам (например, /location/my.js).