web.config重写规则问题?

时间:2012-12-19 04:22:40

标签: php iis-7 url-rewriting web-config

我使用IIS 7 URL重写模块2将我的.htaccess文件转换为web.config。

在我的apache服务器上使用.htaccess时一切正常。但是,当我在我的IIS 7服务器上使用我的web.config时,一切都会变成地狱。

我有3个管理页面:addcharacter.php,deletecharacter.php,editcharacter.php

代码是:

    <li><a href='admin/addcharacter' title='Add Character'>Add Character</a></li>
    <li><a href='admin/deletecharacter' title='Delete Character'>Delete Character</a></li>
    <li><a href='admin/editcharacter' title='Edit Character'>Edit Character</a></li>

问题出在哪里,一旦我转到第一个链接:

www.mywebsite / admin / addcharacter - 第一次正常工作

如果我切换到另一个链接(无论它是什么链接),它会再次附加管理员

www.mywebsite / admin / admin / destination page

我认为它与web.config文件有关,因为这是唯一的区别。

这是我配置文件的一部分:

   <rule name="Imported Rule 9">
                    <match url="^logout$" ignoreCase="false" />
                    <action type="Rewrite" url="logout.php" />
                </rule>
                <rule name="Imported Rule 10">
                    <match url="^admin$" ignoreCase="false" />
                    <action type="Rewrite" url="admin.php" />
                </rule>
                <rule name="Imported Rule 11">
                    <match url="^admin/([A-z][a-z]+)/?$" ignoreCase="false" />
                    <action type="Rewrite" url="admin.php?action={R:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>

任何想法?

1 个答案:

答案 0 :(得分:2)

我认为问题出在您的链接中,而不是重写规则中。您不应该使用相对链接而是使用绝对链接。当您www.mywebsite/admin/addcharacter时,点击链接admin/anotherpage,浏览器会发送www.mywebsite/admin/admin/anotherpage请求。这就是相对链接如何工作,服务器无法做到这一点。但是,您应该在Apache服务器上遇到同样的问题。

所以你的链接应该是:

<li><a href='/admin/addcharacter' title='Add Character'>Add Character</a></li>
<li><a href='/admin/deletecharacter' title='Delete Character'>Delete Character</a></li>
<li><a href='/admin/editcharacter' title='Edit Character'>Edit Character</a></li>
相关问题