Поменяйте местами записи вашего маршрута, чтобы более конкретный маршрут был первым:
routes.MapRoute(null,"client_{client_key}/{keyword}",
new
{
controller = "templates", action = "contents_pagen"
});
routes.MapRoute(null,"client_{client_key}",
new
{
controller = "templates", action = "contents_page"
});
В конвейере запросов распознаватель метода действия видит, что у вас есть параметр маршрута client_key, и сопоставляет его спервый доступный маршрут.
Если сначала поставить маршрут с ключевым словом param, MVC будет сопоставлять этот маршрут только в том случае, если ваш URL-адрес содержит параметры client_key и ключевого слова.В противном случае, если у вас есть только параметр client_key, он пропустит первый маршрут и совпадет со вторым.