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. 如何刪除WWW前綴,添加https並重寫codeigniter mod_rewrite?
- 4. UpdateModel前綴 - ASP.NET MVC
- 5. 從您的網站中刪除WWW前綴
- 6. 從字符串中刪除URL前綴(HTTP:/,WWW等)
- 7. ASP.NET MVC 2 - ViewModel前綴
- 8. ASP.Net MVC中的前綴路由like cakephp
- 9. 刪除 「API」 前綴
- 10. 刪除前綴和春季頁面的URL後綴MVC
- 11. 域名前綴'www'
- 12. 如何刪除供應商前綴
- 13. 如何刪除前綴使用c#.net
- 14. Spring Security刪除RoleVoter前綴
- 15. X2JS刪除屬性前綴
- 16. 角不刪除JSON前綴
- 17. 刪除前綴與製造
- 18. NSSortDescriptor刪除「該」前綴
- 19. 刪除路徑前綴
- 20. 先刪除前綴在MySQL
- 21. 刪除文件://前綴C#
- 22. Angular CLI刪除前綴CSS
- 23. 刪除TSQL中字符串的前綴
- 24. Nginx的重寫無www前綴的域名到www前綴的域名
- 25. 域不www前綴工作
- 26. DNS添加www前綴?
- 27. 如何刪除IEnemurable在asp.net mvc的
- 28. 如何從python中給定的URL中刪除前綴?
- 29. 如何從路由中刪除前綴值:laravel中的資源?
- 30. 如何從SSIS中的varchar中刪除前綴數字?
爲什麼你不只是添加CNAME,指出`www.domain.com`爲`domain.com`? – 2011-02-03 03:51:52
*您要刪除它嗎?你想在應用程序*中刪除它嗎?或者你想*你的用戶*永遠不會看到「www」。即使他們鍵入它的地址? – 2011-02-03 03:53:18