江戸時代には善光寺へ向かう道筋は、たいてい善光寺道といわれていましたが、とくに、中山道(なかせんどう)の洗馬(せば)宿で分かれて北に向かい、郷原(ごうばら)・村井・松本・岡田・刈谷原(かりやはら)・会田(あいだ)・青柳(おおやぎ)・麻績(おみ)宿を経て、猿ケ馬場(さるがばんば)峠を越えて更級(さらしな)郡の稲荷山(いなりやま)宿に出、篠ノ井追分(しののいおいわけ)で北国街道に合流し、丹波島(たんばじま)で犀川を渡って水内郡の善光寺町(長野市)へ至る19里半(約180キロメートル)の道筋を北国往還(おうかん)または善光寺道と呼んでいました。江戸時代の公式文書や記録類には北国往還と記され、これが正しい名称ですが、いまも沿道に残る石の道標などには「ぜんくわうじ道」と刻まれたものが多くみられます。北国街道も善光寺道と呼ばれていましたが、さらに越後・佐渡まで至るので北国街道というのが一般的でした。
徳川家康は、軍事的経済的立場から交通路の整備にとりかかり、慶長6年(1601)には東海道を、翌7年には中山道等を整備して五街道を制定しました。五街道以外の脇往還は、幕府の直轄とせず、開発整備はそれぞれの領主によってなされました。
初期の中山道は松本平を通らず、木曽谷の桜沢から牛首(うしくび)峠、小野宿を経て諏訪に出るものでした。このルートは10数年で廃止され、慶長末年にはあらたに本山、洗馬・塩尻の筑摩郡三宿が正式な中山道と定められました。
まず、洗馬・村井宿間の道路を切開いて奈艮井川東岸の人びとを移して郷原宿をつくり、村井氏の館跡近くへ村井宿を定めました。松本は、親町(おやまち)三町の本町・中町・東町などを善光寺道通りに定めました。岡田宿は約40年遅れて明暦4年(1656)に松本藩主の水野氏が近隣の人びとを集めて宿造りをしました。刈谷原・会田・青柳・麻績等は何れも戦国期の領主の城下町の一部を利用して宿造りをしたと考えられています。
善光寺道は脇往還のため、宿場の規模も中山道にくらべると小さいものでしたが、25人・25疋の人馬を備え公用人馬の継ぎ立てを行なってきました。しかし、大部分が山間部であるうえ、刈谷原峠・立峠・猿ヶ馬場峠などのけわしい峠があるので継ぎ立ては容易でなく、そのためか宿場間の距離は1里半くらいが多く中山道よりも短かくなっています。
また、公用旅行者や参勤大名の通行が少ないので、中山道のように宿に助郷村が定められてはおらず、臨時の大通行の場合は、近郷の応援を求めて継ぎ立て業務を果しました。
宿場間の距離の長い所や峠の麓などには、休憩のために正規の宿場ではありませんが、間宿(あいのしゅく)といって茶店などのある集落がありました。松本の南の出川、会田宿と青柳宿の間の立峠の麓の乱橋・西条、猿ケ馬場峠下の桑原などが間宿と呼ばれていました。