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

2024-01-16

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

例如:

  • http://example.com http://example.com将被重定向到https://www.example.com https://www.example.com
  • http://www.example.com http://www.example.com将被重定向到https://www.example.com https://www.example.com
  • http://example.com/section/page http://example.com/section/page将被重定向到https://www.example.com/section/page https://www.example.com/section/page

这在 Linux 或 cPanel 托管上是小菜一碟。但我不知道如何在 GoDaddy 上执行此操作(我询问了支持人员,但他们似乎什么都不知道......)。我想使用 IIS 很容易做到,但 GoDaddy 不提供 IIS 访问权限。

那么有没有办法通过 Web.config 或 C# 来实现呢?最好是web.config


请查看我的这篇文章,其中提供了许多不同的选项来避免 ASP.NET 站点中出现重复的 URL:防止网站中出现重复 URL 的技术 https://web.archive.org/web/20211020203216/https://www.4guysfromrolla.com/articles/072810-1.aspx。我总结了下面的各种技术,但请参阅本文以获取更深入的处理以及示例 ASP.NET 网站演示。

从 ASP.NET 发出永久重定向

您可以检查您的每个请求的传入 URLGlobal.asax file's Application_BeginRequest事件处理程序。如果 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);
} 

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

如果您的网站由 IIS7 托管and微软的URL重写模块 http://learn.iis.net/page.aspx/734/url-rewrite-module/安装后,您可以在您的文件中添加重写规则Web.config文件。我没有任何由 GoDaddy 托管的网站,所以我不知道他们是否使用 IIS7(我想他们是这样)或者是否安装了 URL 重写模块。请与支持人员核实。

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

<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>

通过第三方应用程序重写

许多网络托管公司都安装了第三方 URL 重写应用程序,例如 ISAPI_Rewrite。我不知道 GoDaddy 是否有此功能,您需要咨询支持人员。但这可能是另一种选择。

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

而不必担心将用户重定向到www.版本中,您可以让用户以他们想要的方式到达您的网站,但向您的页面添加标记以告诉搜索引擎您的 URL 的规范形式。

要指定规范 URL,只需添加一个<link>中的元素<head>网页的一部分。其工作方式如下 - 将以下标记添加到<head>您希望搜索引擎将您网站中那些页面的部分视为全部相同的 URL:

<link rel="canonical" href="canonical_url" /> 

如果你在 Stackoverflow.com 上查看/源代码,你会看到这个<link>标记到位。这是确保站点中存在重复 URL 的好方法 - 例如,www.yoursite.com/foo.aspx and yoursite.com/foo.aspx被视为搜索引擎索引中的相同条目。

快乐编程!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 共享 Global.asax 和 Error.aspx 文件

    我的解决方案中有多个 ASP NET 网站以及一个常见的 C 代码项目 事情如下 Website1 Website2 网站 n Common 首先 我想使用 Global asax 文件来记录所有未处理的异常 我可以为每个网站拥有一个 Gl
  • 如何从 HttpClient 获取最后一个 url?

    好的 我最近切换到 NET Framework 4 5 并开始使用 HttpClient 而不是 HttpWebRequest Response 我真的很喜欢异步 等待风格 但我不知道如何在 POST GET 请求后获取重定向的 url 通
  • ASP.NET 解决方案的本机程序集绑定失败

    NOTE 这个问题的主要目的是理解 解释CLR 的程序集绑定行为 一旦确定原因 解决方案就应该显而易见 请注意 我知道我的设置不是最佳的 nativedll 未签名和版本控制等 但我只是想调查 CLR 的绑定行为 我正在尝试在我的 asp
  • 更改中继器中链接按钮的文本

    我有一个中继器 可以显示与帖子相关的评论 我想添加一些功能 当用户单击它来自的链接时 举报此帖子 to 帖子已被标记 如何访问特定的lnkBut ton 显然 在 ItemDataBound 中 这很容易完成 但在 click 方法中 我不
  • 使用AJAX通过WebApi调用Delete方法

    我在 ASP Net Web 应用程序中使用 WebApi 我在控制器中有一个名为Delete我想通过使用 jQuery 的 AJAX 方法来访问此方法 下面是我的代码 Authorize public int Delete int pro
  • ASP.NET 中获取当前域的最佳方法是什么?

    我想知道在 ASP NET 中获取当前域的最佳方法是什么 例如 http www domainname com subdir http www domainname com subdir 应该产生http www domainname co
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • 根据所选单选按钮启用文本框

    我有一个单选按钮列表 其中列出了不同的业务类别 最后一个选项是Other类别 当用户选择Other类别 我希望能够启用一个文本框 用户可以输入更多信息来解释Other选择 目前 我正在尝试 If rblCategory SelectedIn
  • 如何禁用/覆盖内容页面控件 ID 的命名容器 ID 生成

    我们有一个现有的 ASP Net Web 应用程序 我们希望使用母版页将其转换为该应用程序 在执行此操作的过程中 我发现为 HTML 元素生成的 HTML id 以 ContentPlaceHolder 的 id 为前缀 这就是当我们设置
  • 如何使用 Blazor 在 ASP.NET CORE 中更新数据库后刷新网页

    我正在制作一个小型房间预订网络应用程序 我希望在给定的时间间隔内刷新网页 即给定的一分钟或对数据库进行更改时 我发现StateHasChanged 但我真的不知道如何实现它 这里是新手一克诺比 我尝试将其放在将约会添加到日程表的函数中 va
  • requestValidationMode 2.0 和 4.0 有什么区别

    这是 MSDN 的定义 4 0 默认值 HttpRequest 对象在内部设置一个标志 指示每当访问任何 HTTP 请求数据时都应触发请求验证 这保证了在请求期间访问 cookie 和 URL 等数据之前触发请求验证 配置文件中的页面元素
  • 无法加载 SQL Server Compact 的本机组件

    我已经在 Win7 x64 上安装了 SQL Server Compact Edition 4 0 它可以运行于 Asp Net 和桌面应用程序 此 PC 还安装了 Visual Studio 2010 SP1 但是我的 Server 20
  • 如何在 ASP.NET MVC 中使用 Html.Action() 将参数传递给 Action?

    我一直在使用Html Action ActionName ControllerName 跨控制器调用子操作 而无需在 Views Shared 中拥有视图 这对于显示会话或 cookie 信息等内容非常有效 我不只是访问 cookie 而是
  • RegularExpressionValidator.ValidationExpression 强制长度为 10 或 12 个符号

    RegularExpressionValidator ValidationExpression d 10 仅表示数字 最多 10 位 RegularExpressionValidator ValidationExpression d 10
  • 在 ASP.NET 中加密 cookie

    我想在 ASP NET 中加密 cookie 我已关注本文的方法 http www codeproject com KB web security HttpSecureCookie aspx 但它有一个缺点 那就是在内部方法上使用反射 这导
  • 获取所有查询字符串对并初始化字典的最佳方法

    我想将所有键 值对存储在我的查询字符串中 www example com a 2 b 3 c 34 进入字典 有没有一种快速的方法可以做到这一点 而无需手动循环所有项目 Try HttpUtility ParseQueryString 它给
  • ASP.Net 应用程序中的音频/视频/文本聊天

    我需要在 ASP Net 中开发一个聊天系统 我已经浏览了很多关于类似主题的问题 但没有找到任何一个令人满意的 是否可以从头开始创建它 或者我是否需要使用一些 API 我的要求仅限于我的网站用户 可以说基于内联网 请帮我 要进行文字聊天 人
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 将 HTML 表格导出到 Excel

    我在 ASP NET MVC 视图页面上有 HTML 表 现在我必须将该表导出到 Excel 1 我使用部分视图 Inquiries ascx 来显示数据库中的表数据 使用LINQ to Entity 2 我还使用了 UITableFilt
  • HTML 属性 bgcolor 已弃用:用什么代替?

    VStudio ASP NET 给出以下消息 Attribute bgcolor is considered outdated A newer construct is recommended 推荐的结构是什么 bgcolor是在一个 td

随机推荐