2011-10-27 36 views
1

我已經找到了這一點的web.config代碼來檢查網址,看看它是否缺少www。如果是,則將用戶重定向到www。網址如何匹配www網址與正則表達式

<rewrite> 
     <rules> 
      <clear /> 
      <rule name="WWW Rewrite" enabled="true"> 
       <match url="(.*)" /> 
       <conditions> 
        <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$" /> 
       </conditions> 
       <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent" /> 
      </rule> 
     </rules> 
    </rewrite> 

不過,我需要做相反的事情,我一直用它(無論我多麼努力我不是很好的正則表達式)黑客周圍,試圖得到它,看看如果URL有WWW然後將其重定向到非WWW

原因是是我一個子

trade.words.co.uk ,但我想,以確保他們不去www.trade.words.co.uk

感謝您提前給予幫助

+0

因此,如果有人輸入www.trade.words.co.uk,他們應該被重定向到trade.words.co.uk? – Marcus

+0

是多數民衆贊成在 – user987723

+1

注意:如果您在處理正則表達式時遇到困難,請考慮使用這個相當不錯的工具http://gskinner.com/RegExr/ –

回答

0

試試這個:

<rewrite> 
    <rules> 
     <clear /> 
     <rule name="WWW Rewrite" enabled="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^(?:www\.)([.a-zA-Z0-9]+)$" /> 
      </conditions> 
      <action type="Redirect" url="http://{C:1}/{R:0}" appendQueryString="true" redirectType="Permanent" /> 
     </rule> 
    </rules> 
</rewrite> 
+0

感謝您的幫助馬庫斯,但是我得到'這個網頁有一個重定向循環'錯誤與此 – user987723

+0

哦對不起,現在就試試吧。我做了更新。嘿嘿,我設法滑入,如果它不是萬維網它仍然應該重定向 – Marcus

0

我猜你只需要使用擴展的正則表達式匹配像下面正確的URL相反的web.config規則:

<rewrite> 
     <rules> 
      <clear /> 
      <rule name="WWW Rewrite" enabled="true"> 
       <match url="(.*)" /> 
       <conditions> 
        <add input="{HTTP_HOST}" pattern="^([\w-]+://?|www[.])([^\s]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))$" /> 
       </conditions> 
       <action type="Redirect" url="http://{R:2}" appendQueryString="true" redirectType="Permanent" /> 
      </rule> 
     </rules> 
    </rewrite> 

希望這有助於

+0

嗨塞巴斯蒂安,感謝這一點,似乎有錯誤,當我將此添加到web.config。它不像正則表達式中的<括號,與xml衝突我猜... – user987723

+0

如果你有麻煩,你可以用([\ w-] +://?| www [。])簡化正則表達式[^ \ s] +(?:\([\ w \ d] + \)|([^ [:punct:] \ s] | /)))..我會相應地更新我的帖子 –