Windows 2008 R2 + IIS 7.5 Rewrite組件重寫規(guī)則兼容方法
隨著越來(lái)越多云主機(jī)或者VPS普及Windows 2008 或者Windows 2008 R2,IIS 7.0或IIS 7.5的時(shí)代就來(lái)到了。本文以Windows 2008 R2為例,講述如何把Windows 2003下IIS 6.0的Rewrite組件完美遷移到Windows 2008 R2當(dāng)中。
Windows 2008 R2默認(rèn)只有64位的,但是內(nèi)置了支持32位的功能,就是說(shuō)幾乎所有在32位下能正常運(yùn)行的軟件都能正常運(yùn)行在Windows 2008 R2當(dāng)中,故不必?fù)?dān)心PHP 5.2.17這個(gè)版本支持或不支持了。另外,有點(diǎn)需要注意的,Windows 2008 R2下,IIS版本是7.5,添加是在服務(wù)器管理面板中的“角色”,非“功能”哦,這點(diǎn)在剛接觸2008 R2會(huì)有找不到……
IIS7.0開始就變成模塊化了,需要什么就安裝什么,當(dāng)然也包括ASP支持,咱們用來(lái)運(yùn)行PHP就把CGI也勾上。到時(shí)安裝PHP的時(shí)候,就不用安裝FastCGI了,因?yàn)橐呀?jīng)內(nèi)置了,這是跟Windows 2003不同的。
直奔主題吧,我們?cè)赪indows 2003下使用Rewrite組件,一般都有對(duì)應(yīng)的httpd.ini規(guī)則包,在Apache下,則對(duì)應(yīng)有.htaccess規(guī)則包。網(wǎng)上有不少方法讓我們使用IIS 7.5的ULR Rewrite模塊來(lái)進(jìn)行導(dǎo)入原來(lái)的規(guī)則,導(dǎo)入的規(guī)則會(huì)在網(wǎng)站根目錄生成web.config文件,里面保存的是根據(jù)導(dǎo)入生成的新規(guī)則,由于種種原因,導(dǎo)入的規(guī)則語(yǔ)法未必會(huì)100%能讓IIS 7.5這個(gè)重寫模塊識(shí)別,導(dǎo)致導(dǎo)入的規(guī)則運(yùn)行時(shí)候發(fā)生各種提示,包括無(wú)法生效,HTTP 500內(nèi)部錯(cuò)誤等等。
那有沒(méi)有辦法直接使用原來(lái)Windows 2003的偽靜態(tài)規(guī)則包呢,答案是肯定的,Windows 2008 R2做的兼容性更高,沒(méi)有Windows 2003莫名其妙的向上向下箭頭,權(quán)限是一次性配置到位的。
在Windows 2008 R2的IIS 7.5的站點(diǎn)面板中,有個(gè)“ISAPI篩選器”模塊,這個(gè)就是Windows 2003加載Rewrite組件的地方,接下來(lái),你應(yīng)該明白怎樣加載了吧,同樣道理,在這里把Rewrite.dll作為運(yùn)行文件,加載到ISAPI篩選器,拿KingCMS地方門戶v2.2舉例,ISAPI篩選器Rewrite.dll會(huì)自動(dòng)讀取旁邊的httpd.ini規(guī)則包。
一般而言,沒(méi)實(shí)操過(guò)的教程就到此結(jié)束了,但是在實(shí)際操作當(dāng)中,這樣加載了Rewrite組件,還是無(wú)法生效。其實(shí),原因也很明確,因?yàn)閃indows 2008 R2是64位的,我們直接用在Windows 2003的Rewrite組件是32位的,所以要找到IIS 7.5加載的Rewrite組件如何在設(shè)置為32位兼容模式,經(jīng)過(guò)狂點(diǎn)式搜查,終于在應(yīng)用池那里找到了設(shè)置:
把啟用32位應(yīng)用程序設(shè)置為 True,然后再試試看。偽靜態(tài)是不是生效了。
關(guān)鍵詞:Windows 2008,IIS,Rewrite
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 1
- 1
- 1
- 1
- 1
- 1