如何在 GoDaddy 共享 Windows 托管计划上对单个文件或目录进行 301 重定向?

如何在 GoDaddy 共享 Windows 托管计划上对单个文件或目录进行 301 重定向?

我见过一些关于在 GoDaddy 上重定向域名的帖子,但没有看到有关单个文件的帖子。

就我而言,我使用的是 Windows 共享主机,因此无法使用任何 IIS 管理工具。我希望可以做一些与 Apache.htaccess文件等效的事情来配置单个文件的重定向。

或者,是否有我可以返回的 HTML 文档执行与 HTTP 301 重定向相同的功能?

我应该指出,我正在使用从磁盘提供的纯 HTML,所以我无法返回自定义 HTTP 响应代码,因为我可以使用 PHP、ASP.NET、ASP 等。

GoDaddy 的文档不包括这种情况。


编辑

所以用户78940的回答显示了一种可行的技术(GoDaddy 支持<rewrite>Web.config,但是尽管阅读了关于此配置元素的几个不同的教程,我仍然无法使其工作。

首先,我使用虚拟主机,这意味着我有这个身体的文件夹结构:

root                      < -- used for primarysite.com
    - drewnoakes.com      < -- nested virtual hosting
    - someothersite.com   < -- nested virtual hosting

这里有三个网站。根目录是primarysite.com,子目录是相应名称的网站。不幸的是,这就是您在 GoDaddy 上必须做的事情。您总是有一个主目录,然后在那里嵌套网站。

不幸的是,如果您没有在 URL 后面加上斜杠(以访问该文件夹的默认文档),GoDaddy 设置会进行重定向,这意味着:

http://drewnoakes.com/code/exif (无尾部斜杠)

...重定向至...

http://drewnoakes.com/drewnoakes.com/code/exif/ (带尾部斜杠)

这意味着 Google 的索引中包含这两个 URL。我想整理一下这种情况,让前一个重定向正确,让后者重定向到规范格式,这样我的页面排名就不会降低,我的 URL 也不会那么尴尬,更容易记住。

我尝试了这个配置,但最终出现了无限的 301 重定向循环:

<rewrite>
  <rewriteMaps>
    <rewriteMap name="StaticRedirects">
      <add key="/drewnoakes.com/code/exif/" value="/code/exif/" />
    </rewriteMap>
  </rewriteMaps>
  <rules>
    <rule name="RedirectRule" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" appendQueryString="False" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

那么,如何使用<rewrite>配置元素为这种场景配置 IIS 通配符重定向?

答案1

<meta HTTP-EQUIV="REFRESH"....>方法将返回 200 响应(而不是像 301/302 等的真正的重定向响应)。

据我所知,Go Daddy 的控制面板中没有用于仅重定向共享 Windows 帐户上的某些文件的功能。

在共享 Windows 计划中,您可以通过放置在网站目录根目录中的 web.config 文件使用 IIS 7 URL 重写。您必须确认您的特定托管帐户位于 IIS 7+ 服务器上。如果是这样,请添加以下 web.config 文件以执行简单重定向:

    <?xml version="1.0"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rewriteMaps>
                <rewriteMap name="StaticRedirects">
                    <add key="/somedir/old-page.html" value="/otherdir/new-page.html" />
                </rewriteMap>
            </rewriteMaps>
            <rules>
                <rule name="RedirectRule" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" />
                    </conditions>
                    <action type="Redirect" url="http://www.somedomain.com{C:1}" appendQueryString="False" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

有关更多详细信息,您可以参阅此处的“使用重写映射进行重定向”部分: http://learn.iis.net/page.aspx/469/using-rewrite-maps-in-url-rewrite-module/

答案2

您可以使用 html 重定向来做到这一点:

<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.somedomain.com/somefile.pl">

答案3

另一种Web.config方法(也适用于 Windows 上的 GoDaddy 共享主机)是使用httpRedirect 配置元素

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <httpRedirect enabled="true" exactDestination="true"
                  httpResponseStatus="Permanent">
      <add wildcard="*from/path" destination="/to/path/" />
    </httpRedirect>    
  </system.webServer>
</configuration>

相关内容