我的客户有两个网站(称为mainsite
和),它们以订阅服务的形式运行。他们希望客户只有在主网站上付费订阅后subsite
才能访问,因此任何直接访问或未通过主网站访问的人都应被重定向到(购买订阅)。subsite
subsite
mainsite
mainsite
我负责处理此重定向,由于他们的服务器运行在带有 IIS 6 的 Windows Server 2003 上,因此我在服务器上安装了 IIRF(Ionic ISAPI 重写过滤器)subsite
来处理重写和重定向。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
程序,配置完全有效,那么可能出了什么问题?
答案1
事实证明,虽然我们的服务器运行的是 64 位版本的 Windows Server,但我们的 IIS 安装却运行在 32 位模式下。通过运行 Windows 事件日志发现我们拥有 64 位版本的 IIRF。32 位版本无法安装在我们的服务器上(这很合理),因此手动安装使其正常工作。