汉代太行山“羊肠坂”“壶口关”考
——兼论唐代的“崞口”所在
2021-01-07李广洁牛磊磊
李广洁,牛磊磊
(太原师范学院 历史系, 山西 晋中 030619)
古代穿越太行山的道路,大多沿着穿越太行山的河流峡谷通行,受太行山地势的影响,这些河流上形成了众多的曲流峡谷,因而在太行古道上出现了不少蜿蜒曲折的山道,古人把最曲折的山道称为“羊肠坂”。今山西壶关县东南有“羊肠坂”,泽州之南的太行陉古道上也有“羊肠坂”。东汉末年曹操征伐高干,途径“羊肠坂”,并留下了千古名篇《苦寒行》,使“羊肠坂”之名天下皆知。曹操所经的“羊肠坂”,唐代学者李吉甫认为在壶关县东南,见于《元和郡县图志》。清代学者范照藜认为在南边的太行陉古道上,有《太行陉中羊肠坂》诗:“羊肠百折太行山,孟德歌诗记曲湾。却笑北朝崔祖浚,偏从上党误壶关”。此问题涉及汉代的军事地理,有必要进行考辨。汉代设立的太行山名关“壶口关”,因为名称与壶关县相近,从清初以来,学术界多张冠李戴,把今长治市东南郊的壶关山视为汉代的“壶口关”,如《读史方舆纪要》、《山西通志》(光绪版)、《中国历史地图集》所载。在“壶口关”张冠李戴的基础上,导致上述文献把唐代的太行山隘口“崞口”标定于壶关县东南的太行山中,使古代在上党地区发生的许多重大战役在地理上无法讲通,不可不考辨清楚。
一、汉代太行山“羊肠坂”考
“羊肠坂”之名,最早出现于《战国策·西周策》:“韩兼两上党以临赵,即赵羊肠以上危”[1]97。在《汉书·地理志》中,仅出现在上党郡壶关县条:“壶关,有羊肠坂”[2]1553。可见,在汉代“羊肠坂”专指今壶关县境内的太行山险道。东汉末年,曹操取道太行山“羊肠坂”征伐高干,因为在“太行陉”古道上也有一段险道被称为“羊肠坂”,后世对曹操所经过的“羊肠坂”所在,不免产生了两种说法。
建安十年(205),原来已经归顺曹操的并州刺史高干又反叛,占据了上党郡,“执上党太守,举兵守壶关口”[3]28。曹操此时已经迁居邺城(今河北省临漳县),上党台地对于邺城来说,属于卧榻之旁,应该起到拱卫作用。面对高干在上党的反叛,曹操必须出兵剿灭。曹操派乐进、李典进军上党,征讨高干。“从北道入上党,回出其后。干等还守壶关,连战斩首。干坚守未下,会太祖自征之,乃拔。”[3]521乐进、李典是从邺城西上太行山,从“滏口陉”通道抵达上党台地后再南下,与南边的“羊肠坂”通道、“白陉”通道相比,“滏口陉”通道当然是“北道”。从史书记载乐进“回出其后”、高干“还守”壶关来看,高干当时的防守重点在壶关城(上党郡治所此时已自长子城徙治壶关城,即今长治市)东南的壶关山口一带,即今长治市东南壶口村附近的山口,所以《三国志》记载高干“举兵守壶关口”。乐进从北道出兵,经过今黎城,“回出其后”。高干很快“还守”壶关城,在连战皆败的情况下,高干坚守不出,乐进、李典久攻不克。206年初,曹操率军出征,途径太行山险道“羊肠坂”,创作了流传千古的《苦寒行》: “北上太行山,艰哉何巍巍!羊肠坂诘屈,车轮为之摧。树木何萧瑟,北风声正悲。熊罴对我蹲,虎豹夹路啼。溪谷少人民,雪落何霏霏!延颈长叹息,远行多所怀。我心何怫郁,思欲一东归。水深桥梁绝,中路正徘徊。迷惑失故路,薄暮无宿栖。行行日已远,人马同时饥。担囊行取薪,斧冰持作糜。悲彼东山诗,悠悠令我哀。”
从《苦寒行》诗作描述的道路情况来看,曹操此次出兵,没有选择比较通畅易行的北道——“滏口陉”通道,也没有选择南边的“白陉”通道,此道在距离上要绕远150多千米,更不会选择更南边的“太行陉”,而是选择了路程最近的“羊肠坂”通道,即由邺城向西,通过今河南省的林州盆地,之后沿着浙水谷地进入今壶关县,然后经过今壶关县东南50千米的“羊肠坂”,到达上党城下。这条道路距离最短,但艰险难行的程度大大超出了曹操的预料。“羊肠坂”处于太行山大峡谷中,曹操的《苦寒行》诗作,虽然有文学作品的渲染成分,但应该是“羊肠坂”山道难行比较真实的写照。因为道中多山石,所以“车轮为之摧”。峡谷中多水,常常会遇到“水深桥梁绝”,还要临时架桥。北风怒号,雪落霏霏,夜幕降临,无处宿营。人困马乏,饥肠辘辘,只好“担囊行取薪,斧冰持作糜”。实在狼狈不堪,不免在心中打起退堂鼓,“思欲一东归”。有不少研究者拘泥于“北上太行山”一句,认为曹操经过的“羊肠坂”是今河南省辉县市西北的“白陉”,这是绝无可能的。在汉代,“白陉”是没有“羊肠坂”之称的,从邺城取道“白陉”要向西南绕行80多千米,然后又折向西北行进70多千米才能进入壶关,等于行走了三角形的两条边。曹操作为大军事家,是不可能选择这种南辕北辙、劳神费力的行军路线的。曹操的《苦寒行》是在行军十分困难的情形下,触景生情而作,他此行的军事目标在西北方向,诗中有“北上太行山”十分自然。曹操率领的援军抵达壶关城下,大军围城两个多月,高干出逃向匈奴求救,曹军收复壶关城,保障了邺城西侧的防务安全,今邯郸西南、辉县以北的太行山成为邺城的西部屏障。
今壶关县东南的“羊肠坂”,在汉代之后的地理文献中屡有记载。如《元和郡县图志·河东道·潞州·壶关县》:“羊肠坂,在县东南一百六里,沾水出焉。”“曹公垒,在县东南一百二里。曹公攻高干所筑。”[4]420沾水即今郊沟河,发源于壶关县东柏坡。最迟在唐代之前,文献中已经有“曹公垒”在“羊肠坂”之间的记载。在唐代,这条道路又被称为“穴陉岭路”。《元和郡县图志》潞州(今长治市):“东取穴陉岭路至相州(今河南省安阳市)三百五十里。”[4]418光绪《山西通志·关梁考五》:“大河口,在壶关县东南一百四十里。古穴陉岭道也,通林县。有营,有厘卡。”[5]3577
在今长治市东南6.5千米左右,有一山,即壶关山,“崖径险狭,形如壶口”[6]1957,故名。当年高干先在壶关山口防守,说明这里是壶关城进入太行山的一处重要关隘。由壶关县城通往河南林县的古道,从县城向东南经过东井岭后,分为南道和北道,东井岭为分水岭。南道经南沿头口、马家庄、东柏坡、土圪堆(土谷堆)、桥上至河南林县;北道从大井、安口、平头坞、下石坡、马安驼、土圪堆、桥上至河南林县。南、北两条路最后在今天的土谷堆村交汇。南道是羊肠坂道。由桥上乡再往东,经过大河村就进入河南了。由桥上乡往东大约6千米的地方,就是大河村。村子地处峡谷之中,山势高耸,河水滔滔,道路蜿蜒。大河村由东坡、坡下、上坪、后垴等自然村组成。郊沟河和浙水在此汇合后流入河南省林州境内。“大河村”是因为两条河在此合流而得名。村中的老房子不少,石头砌成的院墙古意盎然,在村子里还可看到石板铺就的千年古道。在古道转弯处的青石台阶上,有几个碗口大小、磨得很深的坑。昔日常有马队经过,马身驮重物,遇到转弯的地方,为了保持平衡,需要用力,马蹄与石板摩擦,久而久之就形成了这样的深坑。
在桥上乡以西6千米多的地方就是羊肠坂。羊肠坂很长,一般认为羊肠坂是从回车村到盘底村。从回车村到土谷堆村约12千米,从土谷堆村到盘底村约8千米。“曹公垒”遗迹在回车村到土谷堆村之间。从实地考察此段峡谷地貌来看,壶关县大河村可以看作“羊肠坂”的东口,而回车村可以看作“羊肠坂”的西口,东口到西口之间的距离约33千米。从壶关县的大河村到长治市东南的壶关山的山口,距离大约为85千米。从壶关县大河口村往东大约15千米就出了太行山。
二、汉代太行山“壶口关”考
因为今长治市东南的壶关山、壶关县与黎城县的壶口关(今东阳关)名称相近、距离不远,古代不少学者往往把它们搞混。汉成帝阳朔二年(公元前23年)秋,因为中原地区发生水灾,朝廷诏令准许流民通过关隘进入太行山以西逃荒。“关东大水,流民欲入函谷、天井、壶口、五阮关者,勿苛留。”[2]313当时函谷关以东发生重大水灾,成千上万的灾民要到河东、关中地区逃荒,朝廷下令把守函谷关和太行山关隘的官兵,向关东的河南、河北流民开关放行。诏令中所说的函谷关在今河南省新安县,五阮关、天井、壶口,都是太行山要道上的关隘。五阮关即今河北省易县西北的紫荆关,是太行山“飞狐陉”通道上的关隘;天井关在今晋城南边的太行山上,关南属河南;壶口关也应该在今山西省与河北省交界的太行山上,即今黎城县东阳关,而不可能是指今长治东南郊的壶关山口,此地已经深入上党腹地,已经不存在再放行的问题。《汉书·地理志》:“上党郡,秦置,属并州。有上党关、壶口关、石研关、天井关。”[2]1553上党关、壶口关、石研关、天井关都应该处于上党郡与四邻交界的高山处。石研关在北,即后来的石会关,在武乡县西北的太岳山上;天井关在南,在泽州之南的太行山上;上党关在西,处于上党郡与河东郡之间的太岳山上;壶口关在东,应当在上党郡与魏郡之间的太行山上,不会在今长治、壶关一带。按照《汉书·地理志》的体例,上党郡高都县下载有天井关,但壶关县下不载壶口关,只说有“羊肠坂”,说明上党郡的“壶口关”不在壶关县境内。汉代的壶口关和春秋时期的壶口一样,都是指今黎城县的东阳关。北魏以前,今黎城县属于潞县,西晋学者杜预《左传注》“潞县东有壶口关”。南北朝时的学者刘昭注《后汉书·郡国志》引魏晋时期的方志《上党记》:“潞,浊漳也。县城临潞。晋荀林父伐曲梁,在城西四十里,今名石梁。又东北八十里有黎城,临壶口关。”[7]3523这说明在魏晋南北朝时期,潞县东部(即今黎城县)有壶口关。北朝时期,壶口关是由上党通往邺城、邯郸等地的“潞川道”上的关隘,多次的大规模军事行动和东魏、北齐时高欢家族经常往来于邺城、晋阳城之间,都是取道“晋阳城—壶口关—滏口—邺城”,即今太原市西南—黎城东阳关—邯郸西纸坊村—临漳县。这条道路是东魏、北齐时期的国道。汉代以后由上党东出太行山所经的壶关、壶口,都是指今黎城县的东阳关,与东汉末年开始作为上党郡治的壶关城、壶关县无涉。《元和郡县图志·潞州·黎城县》:“古壶关,在县东二十五里。”[4]420《新唐书·地理志·潞州上党郡·黎城》:“有铜山,东有壶口故关。”[8]1008《太平寰宇记·潞州·长子县》:“鹿谷山,《冀州图》云:山在县西,有大道入壶口,东出达襄国,西登奚斯巨岭以达河东。”[9]939鹿谷山,今称盘秀山,在今长子县西北、屯留区西南。襄国,即今河北省邢台、邯郸一带。从今屯留、长子西边的盘秀山,向东通往河北邯郸,黎城县的东阳关是必经之路,也是最便捷的一条道路。因此,《冀州图》所云“有大道入壶口”,其“壶口”当然是指今黎城的东阳关。从东阳关东下太行,出“滏口”,向北不远就是“襄国”。这条东西大道,在北朝时就十分著名了。《读史方舆纪要·山西·潞安府》:“壶关山,府东南十三里,延袤百余里,东接相州。崖径险狭,形如壶口。《春秋》哀四年,齐国夏伐晋,取八邑,壶口其一也。《汉志》上党郡有壶口关,盖置于此。……亦谓之崞口。唐天宝末,李萼说平原太守颜真卿,欲开崞口出程千里之师。建中二年,田悦以相魏叛,贝州刺史曹俊谓悦曰:今置万兵于崞口以遏西师,则河北二十四州皆为尚书有矣。既而田悦围临洺,河东节度马燧、昭义节度李抱真救之,合兵东下壶关,军于邯郸。《图经》:壶口东出相州滏口,谓之崞口,地形险要,自昔为噤喉之地。”[6]1958《读史方舆纪要》把“壶关山”和“壶口关”混为一谈,把太行山要道上的“壶口关”,张冠李戴到长治东南的“壶关山”,后来的许多学者都受其影响。《中国历史地图集》第二册把“壶口关”标注于今长治市东南[10]21,有可能是受顾祖禹《读史方舆纪要》错误的影响。
三、唐代太行山“崞口”考
据《旧唐书》记载,唐军平定“安史之乱”时,清河人李萼向平原郡太守颜真卿借兵六千,说:“今闻朝廷使程千里统众十万自太行东下,将出崞口,为贼所扼,兵不得前。今若先伐魏郡,斩袁知泰,太守司马垂使为西南主;分兵开崞口之路,出千里之兵使讨邺、幽陵;平原、清河合同志十万之众徇洛阳,分兵而制其冲”[11]3591。建中二年(781),魏博节度使田悦企图兼并邢、磁二州,派遣杨朝光率五千人驻扎在邯郸西北,以断绝从太行山西来的救兵。田悦的部下曹俊建议:“今置万兵于崞口以遏西师,则河北二十四州皆为尚书有矣。”[11]3842《新唐书·藩镇列传·田悦传》:“悦自将兵甲数万继进,又使朝光攻临洺将张伾,伾固守,食且尽,赏赐不足,乃饰爱女示众曰:‘库廪竭矣,愿以此女代赏。’士感泣,请死战,大破悦军。有诏河东马燧、河阳李芃与昭义军救伾。三节度次狗、明二山间,未进。伾急,以纸为风鸢,高百余丈,过悦营上,悦使善射者射之,不能及。燧营譟迎之,得书言‘三日不解,临洺士且为悦食’。燧乃自壶关鼓而东,破卢疃,战双冈,擒贼大将卢子昌而杀朝光,悦遁保洹水。”[8]5928《旧唐书·田悦传》记载此事:“时朝廷遣张孝忠等讨恒州,悦将孟希祐率兵五千援之。又遣将康愔率兵八千围邢州,杨朝光五千人营于邯郸西北卢家砦,绝昭义粮饷之路,悦自将兵甲数万继进。邢州刺史李洪、临洺将张伾,为贼所攻,御备将竭,诏河东节度使马燧、河阳李芃与昭义军讨悦。七月三日,师自壶关东下,收贼卢家砦,大破贼于双冈。”[11]3841《旧唐书·马燧传》:“燧军出崞口,兵未过险,乃遣持书喻悦,且示之好,悦谓燧畏之。十一月,师次邯郸。”[11]3692可见,在《旧唐书》中,壶关和崞口所指为同一区域,位置在邯郸西北。《新唐书》所说的“燧乃自壶关鼓而东”,《旧唐书》所云“燧军出崞口”,都说明大军从壶关(即壶口关)东下太行山。李萼所说的“崞口”和曹俊所说的“崞口”是一个地方,即太行山上的“壶口关”——今黎城县的东阳关以东的峡谷。今壶关县与长治市之间的壶关山一带,虽然也曾设置过壶口关(应该是在临近古壶关城的壶关山设了一处防守之关),但此处从来就不是保障上党盆地东部防御安全的太行名关“壶口关”所在。从上党地区的防御体系来看,壶关一带的关隘已经深入腹地,无法承担起上党盆地东部的防御重任,这也正是《汉书·地理志》壶关县下没有记载“壶口关”的原因。除了曹操在东汉末年用兵“羊肠坂”征伐高干,后世就很少在“羊肠坂”行军了,一来没必要,二来受曹操《苦寒行》的影响,视“羊肠坂”为畏途。汉唐时期文献所涉及的太行山“壶关”,都是指今黎城县东的太行山东阳关。
《读史方舆纪要》引《图经》云:“壶口东出相州滏口,谓之崞口,地形险要,自昔为噤喉之地。”此处明确无误地把东与相州(北朝时,相州的治所在邺城,即今河北省临漳县)滏口相通的“壶口”称为崞口,从相州(邺城)向西不远就是“滏口陉”,从滏口向西北穿越太行山经过“壶口”(今黎城东阳关)进入上党盆地,通往晋阳城,是北朝时期著名的“邺城—晋阳大道”。从壶关县的“羊肠坂”东出,无法连接滏口。此处所说的“壶口”,只能是太行山“滏口陉”通道上的“壶口关”,即今黎城县东阳关,绝不可能指今长治东南6.5千米的壶关山。《太平寰宇记》引《冀州图》“(鹿谷山)有大道入壶口”,《读史方舆纪要》引《图经》“壶口东出相州滏口,谓之崞口”,《图经》《冀州图》为同一文献——北朝时期的《冀州图经》,说明在北朝时期,横穿上党盆地的东西大道的东出口黎城东阳关被称为“壶口”,它与太行山东麓的“滏口”相连。今东阳关以东的一段峡谷在北朝时就被称为“崞口”,唐代沿用这一别名。今壶关县通往河南林州、安阳的道路与“滏口陉”没有关系,是不能称为“崞口”的。光绪《山西通志》说“似崞口乃今壶关县之大河口”,《中国历史地图集》第五册把“崞口”标注于今壶关县之大河口[12]64,显然都是受了《读史方舆纪要》错误的影响。
从军事地理来说,在邯郸之西、黎城之东的太行山口“崞口”(今黎城县东阳关)部署一万名士兵,就堵住了从太行山之西来的救兵。如果把一万名士兵部署在太行山腹地的壶关县大河口,对来自太行山之西的救兵起不到遏制作用。古代在上党地区的大规模军事行动,都是从今黎城县的东阳关(壶关)下太行山,从太行山东麓的“滏口陉”出太行山。壶关县的大河口远在邯郸西南方数百里,田悦的部下曹俊不可能提出远距离调兵布防的建议,他只是建议把在邯郸西北驻防的部队再向西边的太行山口靠近,即在今黎城县东阳关以东的峡谷部署军队,控制“滏口陉”通道的西口。胡三省为《资治通鉴》作注:“崞口,在洺州邯郸县西,盖即壶关之险也。”[13]6958胡三省认为,崞口是邯郸以西通往壶口关的险要之地,他的分析是有道理的。在邯郸之西的太行山上,涉县之东有一段峡谷,正符合“崞口”的位置、地形。马燧是河东节度使,其所部从太原南下上党,要东出太行,目的地是河北平原上的临洺(今河北省邯郸市永年区),根本不可能放着平坦易行、距离较近、著名的“晋阳—邺城大道”不走,而选择距离较远、十分艰险的壶关县的“羊肠坂”。马燧、李抱真的大军取道今黎城的东阳关出太行山,为了麻痹田悦,避免叛军在太行山险要地段驻兵布防,马燧派人给田悦送信,向其示好。《资治通鉴》记载:“燧等军未出险,先遣使持书谕悦。为好语,悦谓燧畏之,不设备。燧与抱真合兵八万,东下壶关。”[13]7305马燧担心叛军在太行山“崞口”附近的险隘阻击,这个地方是上党地区通往邺城、邯郸一带的咽喉之地,只有今涉县以东的峡谷符合。如果叛军在今壶关县的大河口一带阻击,马燧的大军从黎城东阳关下太行,完全用不着担心。当时田悦派遣杨朝光率五千人驻扎在邯郸西北,就是为了“绝昭义粮饷之路”,断绝太行山黎城—涉县—武安西北方向来的运粮路线。邢州、临洺的运粮路线根本不可能选择今壶关县的“羊肠坂”一线。如果马燧、李抱真的八万大军从壶关—林州—安阳一线出太行,叛军在邯郸西北部署军队阻击毫无意义。从地理方位来看,选择壶关县的“羊肠坂”道路,属于南辕北辙,比取道黎城县的“壶口关—滏口陉”通道,要绕远100多千米。在今涉县以东、冶陶镇以西,是一段近30千米的峡谷,道路在谷底蜿蜒,是最佳的设伏点。唐代平定“安史之乱”时,朝廷命令程千里率十万大军东出太行山“崞口”平叛,“为贼所扼,兵不得前”。叛军可能就是占据了这一带天险,使得程千里的部队无法东下太行山。“崞口”所在,只能是太行山“滏口陉”通道上的险峻峡谷,而不可能是深入太行山腹地的壶关县大河村。根据《元和郡县图志》的记载,在唐代,由潞州(今山西省长治市)通过“羊肠坂”前往相州(今河南省安阳市)的道路被称为“穴陉岭路”,这是一条与“滏口陉”通道相平行的东西通道。如果平叛大军经过这条道路,李吉甫在《元和郡县图志》中是不会忽略这一重大事件的。
四、小结
汉代的太行山“羊肠坂”通道,是由今山西壶关县向东南,经过今河南林州市,到达安阳、邺城。曹操的《苦寒行》所描述的,正是今壶关县东南的“羊肠坂”。唐代时,“羊肠坂”通道被称为“穴陉岭路”。就道路状况而言,壶关县的“羊肠坂”远比黎城县的“古壶关”艰险难行;就战略位置而言,黎城县的“古壶关”远非壶关县的“羊肠坂”可比。历史上,从上党地区向河北平原南部的邯郸、邺城一带用兵,首先要控制的就是今黎城县的太行山“古壶口关”,即今东阳关。汉代设立的太行山名关“壶口关”,即今黎城县的东阳关。唐代的太行山“崞口”,也在黎城县的东阳关以东(今涉县附近)的峡谷中。