2012-06-17 140 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重写?!?!