2010-10-06 120 views
1

我有一个网站目前在其页面上使用.aspx扩展名。它获得了Joomla转换,并且.aspx扩展名不再适用。我需要它,这样如果有人输入.aspx扩展名,它会刚刚删除该URL,因此当前网站上的所有SEO都不会中断。如何正确地使用.aspx将URL重写为不带.aspx的URL?

例如,我需要 www.arrc.com.php5-17.websitetestlink.com/services/managed-services.aspx 重写/重定向到 www.arrc.com.php5-17.websitetestlink .COM /服务/托管服务

这是我在我的web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
    <rules> 
     <rule name="Migrate to PHP"> 
     <match url="^([_0-9a-z-]+)\.aspx" /> 
     <action type="Redirect" redirectType="Permanent" url="{R:1}" /> 
     </rule> 
     <rule name="Rewrite .aspx"> 
     <match url="^([_0-9a-z-]+)/?([_0-9a-z-]+)\.aspx" /> 
     <action type="Redirect" redirectType="Permanent" url="{R:1}/{R:2}" /> 
     </rule> 
    </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

第一个URL匹配是有一个URL像services.aspx,而不是服务的任何网址/ managed-services.aspx

每当我去www.arrc.com.php5-17.websitetestlink.com/services/managed-services.aspx它给了我一个内部服务器错误,但www.arrc.com.php5-17.websitetestlink.com/services .aspx重写正确。我能做些什么来解决这个问题?

回答

1

他们贪心,切换顺序。

<rule name="Rewrite .aspx"> 
    <match url="^([_0-9a-z-]+)/?([_0-9a-z-]+)\.aspx" /> 
    <action type="Redirect" redirectType="Permanent" url="{R:1}/{R:2}" /> 
    </rule> 

<rule name="Migrate to PHP"> 
    <match url="^([_0-9a-z-]+)\.aspx" /> 
    <action type="Redirect" redirectType="Permanent" url="{R:1}" /> 
    </rule> 
+0

哇,我从来没有想过要做到这一点,但它的工作!非常感谢! – Derek 2010-10-06 19:58:47

0

两个潜在的问题:

  1. 我想重写,这将打击他们安排妥当,这意味着第一个规则是要始终揭开序幕。尝试切换规则的顺序。

  2. 破折号应在[_0-9a-Z-]正常工作,但尝试逃离冲刺。