2011-10-18 68 views
0

我的SEO同事已经在几个URL请求解雇了涉及移动如何将一个网址给ASP.NET MVC网站

www.mydomain.co.uk/news
www.mydomain.co.uk /新闻/ {ID}/{TITLE}

www.mydomain.co.uk/uk-news
www.mydomain.co.uk/uk-news/{id}/{title }

执行此操作的最佳方法是什么?

我只是想在Global.asax文件中更改路线的

FROM:

routes.MapRoute(
     "News", // Route name 
     "News", // URL with parameters 
     new { controller = "News", action = "Index" } // Parameter defaults 
    ); 

TO:

routes.MapRoute(
    "News", // Route name 
    "uk-news", // URL with parameters 
    new { controller = "News", action = "Index" } // Parameter defaults 
); 

,并设立一个301重定向的基本WWW .mydomain.co.uk/news

有没有更好的方法来做到这一点?

回答

4

我不这么认为。在正确的轨道上,更改路线上的URL并执行301永久性重定向是您的选择。对于301尝试使用URL重写模块。

重写模块

<!-- Web.config file in subdirectory to be redirected --> 
<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="RedirectRule" stopProcessing="true"> 
      <match url="(.*)" ignoreCase="true" /> 
      <action type="Redirect" url="http://www.newdomain.com/{R:1}" redirectType="Permanent" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="www\.old-domain\.com" /> 
      </conditions> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

的ISAPI_Rewrite

RewriteCond Host: ^mydomain\.co.uk 
RewriteRule /news http://www.mydomain.co.uk/uk-news [I,O,RP,L] 

I(忽略大小写)

指示字符,而不管的情况相匹配。该标志影响RewriteHeader指令和所有相应的RewriteCond指令。处理之前

O(正常化)

规一化的字符串。规范化包括删除URL编码,非法字符等。另外,URI的IIS规范化完全删除了查询字符串。因此,如果需要查询字符串,则不应使用规范化。此标志对URL和URL编码标头非常有用。

RP(永久重定向)

几乎一样的[R]标志而是发出301(永久移动)的HTTP状态代码,而不是302(移动临时的)。

L(最后一条规则)

停止重写此过程中,不应用任何重写规则。

+0

感谢您的回复,我只是想知道重写模块是否可以在IIS 6上工作? – SimonGates

+0

Aww nope。我为我们的iis 6实例使用isapi_rewrite:/你可以检查它,但它不是免费的,免费的是http://iirf.codeplex.com/试试看。 –

+0

我有一个ISAPI_Rewrite配置文件,重写条件是什么?对不起,我不熟悉ISAPI_rewrite – SimonGates