9

所以我在一个主域下有 4 个子域的网站上工作。他们已经有 MSM 许可证,所以我用它来分解潜艇。

我的问题是:

处理所有网站的 404 重定向的最佳方法是什么?我想为主站点和所有子域使用一个通用的 404 页面。

在主站点上,这很容易。

{if no_results OR segment_3!=""}
    {redirect="404"}
{/if}

但是,如果我要添加以下内容,其他网站不会只是为分析之类的内容注册页面视图:

{if no_results OR segment_3!=""}
    {embed="default_site:_includes/404"}
{/if}

我希望能够在站点范围内获得相同的结果并捕获所有 404 统计信息。

谢谢,布赖恩

4

1 回答 1

6

好的,所以我最终得到的是以下内容:

我在每个站点中创建了一个“_includes”模板组。然后,我在每个站点的模板组中创建了一个模板“404-Page”。(这实际上只是为了便于记忆。它们可以在您想要的任何模板组、模板配置中)

每一个都包含以下内容:

{embed="default_site:_includes/404-Page"}

然后在每个站点下,在: Design => Templates => Global Preferences

我将网站设置为“启用严格 URL”=“是”和“404 页面”=“_includes/404-页面”

我在发送的标头中检查了这一点,它触发了 404 罚款。我遇到的问题之一是它在 IIS7 下的 Windows 服务器上运行。我还必须禁用 web.config 文件中的 404 错误并处理自定义 404 代码,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom" existingResponse="Replace">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" path="/index.php/_includes/404-Page.html" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

我将此 web.config 文件放置在站点的每个根文件夹中。由于路径名称相同,因此这是一个简单的粘贴/转储。

我希望这对其他人有所帮助。;)

于 2012-11-01T13:56:26.300 回答