【问题标题】:MVC3 + WordPress IIS Url Rewriting RulesMVC3 + WordPress IIS URL 重写规则
【发布时间】:2012-06-19 14:26:01
【问题描述】:

我有一个位于http://mydomain.com/mymvcapp/ 的 ASP.NET MVC3 网站。但是,网站 (mydomain.com) 的根目录包含一个运行 PHP 的 WordPress 站点。因此,我设置了以下 IIS URL 重写规则,以允许 WordPress 通过其重写机制正常运行:

    <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/ 文件夹下)很好地共存?

【问题讨论】:

    标签: wordpress iis-7 url-rewriting asp.net-mvc-routing


    【解决方案1】:

    我自己想出来的。正则表达式可能是最强大的 YET 复杂/令人困惑的技术之一。但是在这种情况下,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>
    

    【讨论】:

      【解决方案2】:

      这是极少数讨论使 WordPress 和 ASP.NET 在 IIS 设置中良好共存的帖子之一。非常感谢。

      我想将此作为对您的原始问题或答案的评论发布,但我选择写一个“答案”只是因为这是一个诚实的问题并且我需要一些格式化功能。

      我有多个按站点运行的 ASP.NET 应用程序。特别是根网站正在运行 MVC4 应用程序。

      由于我无法在根目录安装 WordPress,我的计划是将其放在自己的应用程序文件夹 http://mydomain.com/wordpress/ 上,然后有一个 URL 重写规则来执行以下操作(使用伪代码):

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

      我只是用这种方法造成了混乱,并且没有成功使用漂亮的永久链接,有时会进入重定向循环,有时会破坏指向 .css 文件、管理页面等的链接......

      你有没有想过这个想法,例如,将 wordpress 作为一个子应用程序并进行子域 URL 重写?!?!

      【讨论】:

        【解决方案3】:

        我有类似的情况,但我不需要编辑我的 web.config 文件。相反,我按照https://wordpress.org/support/article/giving-wordpress-its-own-directory/ 的说明进行操作。

        在将 WordPress 进程移动到子文件夹方法 II(更改 URL)中的第 7 点,您可以找到 IIS 安装选项。

        【讨论】:

          猜你喜欢
          • 2014-10-27
          • 2014-05-01
          • 2011-04-21
          • 2014-01-05
          • 1970-01-01
          • 1970-01-01
          • 2020-01-05
          相关资源
          最近更新 更多