问题描述
|
我已经将Linux下的wordpress Mu博客迁移到IIS 7下的WP 3,因此我需要将http://mydomain.com/blog/blahblah/重定向到http://mydomain.com/blahblah/
我添加到wordpress web.config
<rule name=\"rewrite /blog/\">
<match url=\"^/blog/([_0-9a-z-]+)/\" />
<conditions>
</conditions>
<action type=\"Rewrite\" url=\"/{R:1}/\" />
</rule>
这样web.config现在包含:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<configuration>
<system.webServer>
<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>
<rule name=\"rewrite /blog/\">
<match url=\"^/blog/([_0-9a-z-]+)/\" />
<conditions>
</conditions>
<action type=\"Rewrite\" url=\"/{R:1}/\" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
wordpress继续工作,但是/ blog /没有重定向。为什么呢
解决方法
1)最好将此规则移至通配符规则之上
2)您有斜线
^/blog/...
-您不需要:^blog/...
3)因为没有条件,我也删除了<conditions></conditions>
<rule name=\"rewrite /blog/\">
<match url=\"^blog/([_0-9a-zA-Z\\-]+)/$\"/>
<action type=\"Rewrite\" url=\"/{R:1}/\"/>
</rule>
上面是重写规则-您在浏览器中看到相同的url,但后面的执行方式不同。
如果要重定向,请使用以下命令:
<rule name=\"rewrite /blog/\">
<match url=\"^blog/([_0-9a-zA-Z\\-]+)/$\"/>
<action type=\"Redirect\" url=\"/{R:1}/\" redirectType=\"Permanent\" />
</rule>