2
A
回答
7
我相信用IIS的URL重写模块做这件事更合适。
如果您有权访问IIS的管理工具,则可以在网站设置的“IIS”部分设置重写规则。如果您从那里(在右列菜单中)选择“添加规则...”,请在SEO部分中选择“规范域名”规则,以便几乎完全自动化获取规则设置。
如果不是,重写规则看起来像这样在你的web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^yourdomain\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://yourdomain.com/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
2
您可以处理Application.BeginRequest
事件,并检查是否Request.Host
开始与www
。
如果是这样,请致电Response.RedirectPermanent
,并传递一个包含请求路径和裸域的URL。
您可以通过编写
"yourdomain.com" + Request.Url.PathAndQuery
2
构建新的URL我发现了一个很好的解决方案在这里:http://nayyeri.net/remove-quotwwwquot-from-urls-in-asp-net
public class RemoveWWWPrefixModule : IHttpModule
{
public void Dispose() { }
private static Regex regex = new Regex("(http|https)://www\\.", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
Uri url = application.Context.Request.Url;
bool hasWWW = regex.IsMatch(url.ToString());
if (hasWWW)
{
String newUrl = regex.Replace(url.ToString(),
String.Format("{0}://", url.Scheme));
application.Context.Response.RedirectPermanent(newUrl);
}
}
}
0
这是比较通用的配置,你可以在URL重写一次写根IIS(并非特定于某个应用程序池),它将自动应用于所有您的IIS网站,而不依赖于您的域名。
1
您可以在web.config文件中使用以下重写规则。
该重写规则将删除WWW并保留尾随URL和启动协议。
<rewrite>
<rules>
<clear/>
<rule name="Canonical host name" enabled="true">
<match url="(.*)"/>
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" negate="false" pattern="^www\.(.+)$"/>
<add input="{CACHE_URL}" pattern="^(.+)://" />
</conditions>
<action type="Redirect" url="{C:2}://{C:1}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
0
更简单的解决方案是创建动作过滤器并用它来装饰你的动作。
public class RemovePrefix : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var url = filterContext.HttpContext.Request.Url.ToString().Replace("http://www.", "http://");
filterContext.Result = new RedirectResult(url);
}
}
相关问题
- 1. 在ASP.NET MVC 1.0中删除'WWW'
- 2. 在asp.net中删除发布数据的前缀mvc
- 3. UpdateModel前缀 - ASP.NET MVC
- 4. 从您的网站中删除WWW前缀
- 5. 删除 “API” 前缀
- 6. ASP.NET MVC 2 - ViewModel前缀
- 7. ASP.Net MVC中的前缀路由like cakephp
- 8. 域名前缀'www'
- 9. NSSortDescriptor删除“该”前缀
- 10. 删除文件://前缀C#
- 11. Angular CLI删除前缀CSS
- 12. Nginx的重写无www前缀的域名到www前缀的域名
- 13. 域不www前缀工作
- 14. 如何从Python中的文件名中删除前缀?
- 15. 如何从python中给定的URL中删除前缀?
- 16. 如何从SSIS中的varchar中删除前缀数字?
- 17. 如何从路由中删除前缀值:laravel中的资源?
- 18. 如何删除IEnemurable在asp.net mvc的
- 19. 如何在ASP.NET MVC中定义表单字段前缀
- 20. 从名称中删除前缀python
- 21. 从列表中删除前缀u'
- 22. 从变量中删除前缀
- 23. 从变量中删除前缀-bash
- 24. 如何删除数组键中的前缀
- 25. 如何删除routes.rb中产生的前缀PARAMS路径
- 26. 如何从greenDAO生成的getters和setters中删除“m”前缀?
- 27. ASP.NET MVC中删除项目
- 28. 如何在webview android中加载无前缀(www)的URL?
- 29. 如何从https子域中删除www
- 30. WordPress删除WWW
为什么你不只是添加CNAME,指出`www.domain.com`为`domain.com`? – 2011-02-03 03:51:52
*您要删除它吗?你想在应用程序*中删除它吗?或者你想*你的用户*永远不会看到“www”。即使他们键入它的地址? – 2011-02-03 03:53:18