Windows-Server-2003
IIS 6 上的 IIRF 拒絕伺服器連接
我的客戶有兩個作為訂閱服務執行的站點(例如,稱為
mainsite
和)。subsite
他們希望客戶subsite
只有在他們的主站點上有付費訂閱時才能訪問,因此任何subsite
直接訪問或不通過訪問的人都mainsite
應該被重定向到mainsite
(購買訂閱)。我的任務是處理這個重定向,因為他們的伺服器執行在帶有 IIS 6 的 Windows Server 2003 上,我在
subsite
伺服器上安裝了 IIRF(離子 ISAPI 重寫過濾器)來處理重寫和重定向。Iirf.inisubsite
文件包含以下內容:# Enable logging. RewriteLogLevel 1 RewriteLog D:\sites\subsite\Files\IIRFLog # Enable services. RewriteEngine ON StatusInquiry ON IterationLimit 5 # Redirect to main site. RewriteCond %{HTTP_REFERRER} ^https?://(?!mainsite)([-\w]*\.)(?!mainsite)\S*$ [I] RedirectRule ^(.*)$ http://mainsite.com/ # Add `www.` to URLs. RewriteCond %{HTTP_HOST} ^(subsite\.com).*$ [I] RedirectRule ^/(.*)$ http://www.subsite.com/$1 [I,R=301] # URL rewrites for WordPress pretty permalinks. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/(.*)$ /index.php/$1 [L]
(當然,
mainsite
並且subsite
被真實域所取代。)但是,問題是,當我在伺服器上啟用 IIRF 時,它會完全停止提供頁面(在 Firefox 中,給出的錯誤是伺服器重置了連接)。不會發生重定向,也不會將日誌文件寫入給定的日誌文件位置。
根據捆綁的
TestDriver
和TestParse
程序,配置是完全有效的,那麼可能出了什麼問題?
事實證明,雖然我們的伺服器執行在 64 位版本的 Windows Server 上,但我們的 IIS 安裝執行在 32 位模式下。執行 Windows 事件日誌顯示我們擁有 64 位版本的 IIRF。32 位版本不會安裝在我們的伺服器上(足夠明智),所以手動安裝讓它工作。