/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

ASP.NET MVC如何实现带www域名重定向到不带www顶级域名

2015-05-03 十有三 0 浏览:1万+ .NET技术 ASP.NET MVC

本文记录了在ASP.NET MVC项目中,如何通过配置文件,实现将带www的二级域名301重定向到顶级域名的方法。通过web.config配置文件的设置,可以解决虚拟机无法直接设置IIS的问题。不过需要注意的是,虚拟机上必须要安装URL重写工具,否则就无法实现重定向功能,不过一般服务器商都是会安装的。

这里建议先看下这3篇文章和资料,了解下IIS的URL重写工具模块的相关信息,这样有助于我们理解在配置文件中设置重写的属性节点:

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • URL Rewrite Module Configuration
  • IIS URL 重写模块

首先看下我的ASP.NET MVC项目中的web.config配置:

<rewrite>
  <rules>
    <rule name="www重写" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAny">
        <add input="{HTTP_HOST}" pattern="^www.shiyousan.com$" />
      </conditions>
      <action type="Redirect" url="https://shiyousan.com/{R:0}" />
    </rule>
  </rules>
</rewrite>

<rule>节点主要设置规则名称,和匹配规则的模式语法,默认是使用正则表达式匹配,如果需要设置其他语法,则要设置patternSyntax属性,一共有三个值:ECMAScript(正则表达式),Wildcard(通配符),ExactMatch(完全匹配)


<match url=".*" />节点是规则模式,主要用于匹配请求的URL,这里的url就是要使用正则表达式来进行匹配,只有所请求的URL的路径符合匹配,后面的规则才有效果。具体可以看这篇文章:详解IIS中URL重写工具的匹配URL-规则模式(rule patterns)


<conditions>节点是规则条件,主要用于过滤URL中的主机/参数/端口等部分,由于我们是要将www.shiyousan.com跳转到顶级域名shiyousan.com,所以这里input属性设置为{HTTP_HOST}  (表示匹配主机的服务器变量),匹配模式的语法属性pattern为"^www.shiyousan.com$。具体可以看这篇文章:详解IIS中URL重写工具的规则条件(Rule conditions)


最后是<action>节点,这个节点主要是设置要进行的操作,type属性一共有三个,None(无),Rewrite(重写),Redirect(重定向),CustomResponse(自定义响应),AbortRequest(终止请求),由于我们要做301重定向,所以设置的type="Redirect",并且设置要重定向的URL为:https://shiyousan.com/{R:0}。 另外关于{R:0},其实是属于正则的反向引用的语法,可以参考这篇文章:详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}。


另外可以参考与本文相关的一篇文章:ASP.NET 301跳转或者进行301重定向/转向的方法

 


作者:十有三

出处:https://shiyousan.com/post/635662476800272408

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 详解IIS中URL重写工具的匹配URL-规则模式(rule patterns)
  • 下一篇: ASP.NET MVC网站发布后出现“/”应用程序中的服务器错误。

相关文章
  • 解决C#获取SQL的timestamp类型到程序中为byte[]类型的问题
  • 解决"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站"的问题
  • 发布BlogEngine.NET 3.3.5.0 出现 HTTP 错误 404.2 和404.0
  • C# 控制台应用程序从外部传参运行和调试
  • 解决ASP.NET MVC异常:提供的防伪标记适用于用户“*”,但当前用户为“”
  • Web 部署任务失败 未能使用指定的进程“Web Management Service”连接到远程计算机

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • Visual Studio Community 2013无法折叠代码块
  • 解决鲁大师卸载出现残留文件Hpsvc.dll-无法删除提示文件正在使用
  • ASP.NET 验证码插件 BotDetect CAPTCHA
  • 解决SQL Service创建链接服务器出现(null) 是无效的产品名称的问题
  • Windows Server 2012 如何开启虚拟内存

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号