2012-06-17 184 views
2

我有一個ASP.NET MVC3網站位於http://mydomain.com/mymvcapp/。但是,網站(mydomain.com)的根目錄包含一個運行PHP的WordPress網站。因此,我把下面的IIS URL重寫規則允許的WordPress通過其重寫機制正常運行:MVC3 + WordPress的IIS網址重寫規則

<rewrite> 
     <rules> 
      <rule name="wordpress" patternSyntax="Wildcard"> 
       <match url="*" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="index.php"/> 
      </rule>  
     </rules> 
    </rewrite> 

所以用這個規則來代替我的WordPress功能完美,但是,我MVC改寫不起作用。我將如何修改這個規則來允許WordPress和MVC(在/ mymvcapp /文件夾下)很好地共存?

回答

4

自己想出來。正則表達式可能是最強大的複雜/混淆技術之一。但在這種情況下,patternSyntax標誌被設置爲通配符,而不是正則表達式,這引起了我的困惑。希望這可以幫助別人! =]

<rewrite> 
     <rules> 
      <rule name="wordpress" patternSyntax="Wildcard"> 
       <match url="*" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{PATH_INFO}" pattern="/mymvcapp/*" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="index.php" /> 
      </rule>  
     </rules> 
    </rewrite> 
1

這是任何地方的極少數職位,談論讓WordPress和ASP.NET在IIS中設置精美的共存之一。所以對此表示讚賞。

我正在考慮發佈這個評論給你的原始問題或答案,但我選擇寫一個「答案」,因爲這是一個誠實的問題,我需要一些格式化功能。

我有多個ASP.NET應用程序在網站上運行。特別是根網站正在運行一個MVC4應用程序。

既然不能安裝在根WordPress的,我的計劃是有它自己的應用程序文件夾http://mydomain.com/wordpress/,然後有一個URL重寫規則做以下(使用peudo碼):

blog.mydomain.com/{path} --> mydomain.com/wordpress/{path} 

我只造成這種方法很亂,都沒有成功使用漂亮的永久鏈接,有時會陷入重定向消息循環等次打破鏈接.css文件,管理頁面,等等

有你曾經給過這個想法,也就是說,把wordpress作爲一個子應用程序,而不是做子域URL重寫?!?!