К сожалению, вы должны управлять обоими этими сценариями вручную в Sitecore, они оба имеют довольно простые решения, но потребуют некоторой разработки с вашей стороны.
Для первого (доступ к страницам без переводов), я думаю, вам нужно будет расширить текущий ItemResolver
внутри Sitecore и явно проверить, существует ли версия для выбранного языка. Я не реализовал это сам, но вот как я бы смотрел на это.
Второй (только для определенных языков) - это то, что я обработал, и меня очень беспокоило, что Sitecore не может справиться сам (хотя, возможно, это происходит, и я пропустил это). Для этого я сразу после LanguageResolver создал шаг в конвейере с именем PermissableLanguageChecker. Это проверяет, является ли текущий язык запроса одним из определенных допустимых значений, и если это не так, устанавливает язык обратно на язык по умолчанию, или в вашем случае выдает 404.
Для "допустимых значений" я прочитал их из конфигурации сайта с новым свойством там:
<site name="website" ... permissableLanguages="pl-PL,en" language="pl-PL" ... />
Это свойство permissableLanguages удобно, поскольку мы также можем использовать его позже на сайте при представлении пользователю элемента управления выбором языка.