我有一个由 Sitefinity CMS 提供服务的站点,位于http://www.example.com/,我在同一台服务器上也有一些站点从相同的根位置提供服务,访问方式如下:http ://www.example.com/sub-site/。所有这些子站点都在 php 中,并解析为特定的 php 文件,例如 index.php。这些子站点有很多,我们希望从服务器中删除其中的一些。我们通常将get请求中的变量发送到这些子站点如下:http ://www.example.com/sub-site/?address=12&ID=22
我们要做的是设置一个重写规则,它将传入的请求重定向到不存在的子站点到一个用 PHP 编写的错误页面。此重写规则应保持查询字符串完整,以便在到达错误页面后我们仍然可以使用这些变量。
这是我们拥有的重写规则:
<rewrite>
<rules>
<rule name="RedirectFileNotFound" stopProcessing="true">
<match url=",*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" url="errorpage.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
所以这个重写规则效果很好,事实上,它效果很好。当我转到 Sitefinity 网站的主页时,一切都很好,但是当我单击该页面上的任何链接时,我被重定向到错误页面。我已经确定问题与动态服务器内容有关,因为 Sitefinity 站点链接看起来像这样http://www.example.com/order/或http://www.example.com/info/。这些目录不存在,因此重写规则每次都会捕获它们。
有没有一种方法可以重定向子站点而无需站点站点以相同的方式响应?
我发现这个SO 帖子正在解决类似的问题,但我无法在那里找到太多帮助。