如何通过Web.config或C#将所有内容重定向到https:// www.该网站的版本?

emz*_*ero 3 asp.net redirect http-status-code-301

我在GoDaddy上托管了一个ASP.NET网站.我需要将每个请求重定向(301)到https://www.example.com/whatever

例如:

这在Linux或cPanel主机上是小菜一碟.但是我不知道怎么在GoDaddy上做这个(我问过支持,但他们似乎什么都不知道......).我想用IIS很容易,但是GoDaddy没有给你IIS访问权限.

那么有没有办法通过Web.config或C#来做到这一点?最好是web.config

Sco*_*ell 5

查看我的这篇文章,它提供了许多不同的选项来避免ASP.NET站点中的重复URL:防止网站中重复URL的技术.我已经总结了下面的各种技术,但是请参阅文章以获得更深入的处理,以及示例ASP.NET网站演示.

从ASP.NET发布永久重定向

您可以检查Global.asax文件Application_BeginRequest事件处理程序中每个请求的传入URL .如果URL缺少前导,www.您可以将其附加并永久重定向到新URL.

protected void Application_BeginRequest(object sender, EventArgs e)
{
   if (Request.Url.Authority.StartsWith("www"))
      return;

   var url = string.Format("{0}://www.{1}{2}",
               Request.Url.Scheme,
               Request.Url.Authority,
               Request.Url.PathAndQuery);

   Response.RedirectPermanent(url, true);
} 
Run Code Online (Sandbox Code Playgroud)

使用IIS 7的URL重写模块将URL重写为规范格式

如果您的网站由IIS7托管并且安装了Microsoft的URL重写模块,则可以在Web.config文件中添加重写规则.我没有任何托管GoDaddy的网站,所以我不知道他们是否使用IIS7(我想他们会这样做)或者他们是否安装了URL Rewrite Module.检查支持.

假设满足这些先决条件,您将使用以下配置:

<configuration>
   ...

   <system.webServer>
      <rewrite>
         <rules>
            <rule name="Canonical Host Name" stopProcessing="true">
               <match url="(.*)" />

               <conditions>
                  <add input="{HTTP_HOST}" pattern="^yoursite\.com$" />
               </conditions>

               <action type="Redirect" url="http://www.yoursite.com/{R:1}" redirectType="Permanent" />
            </rule>
         </rules>
      </rewrite>
   </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

通过第三方应用程序重写

许多Web托管公司都安装了第三方URL重写应用程序,例如ISAPI_Rewrite.我不知道GoDaddy是否有这个,你需要检查支持.但这可能是另一种选择.

告诉搜索引擎蜘蛛标记中的规范形式

www.您可以让用户按照他们的意愿到达您的网站,而不是担心将用户重定向到该版本,但可以在页面中添加标记,以告诉搜索引擎您的网址的规范形式.

要指定规范URL,只需在网页部分添加一个<link>元素即可<head>.其工作方式如下 - 将以下标记添加到<head>您希望搜索引擎考虑所有相同URL的网站中这些页面的部分:

<link rel="canonical" href="canonical_url" /> 
Run Code Online (Sandbox Code Playgroud)

如果您在Stackoverflow.com上执行查看/来源,您将看到此<link>标记.这是确保您网站中重复网址的好方法 - 例如,www.yoursite.com/foo.aspx并且yoursite.com/foo.aspx被视为搜索引擎索引中的相同条目.

快乐编程!