Web.config将所有路径重定向到index.php - 无法正常工作

时间:2014-01-09 00:56:21

标签: php .htaccess redirect web-config windows-server

我主要使用Apache和.htaccess,但我目前正在一个托管在Windows服务器上的网站上工作。 Web.config给我带来了很多问题。

我正在尝试将所有URL请求重定向到index.php,以便PHP脚本可以解析URL并提供正确的页面。

.htaccess(在Apache上运行正常)如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ - [NC,L]
RewriteRule ^(.*)$ /index.php [NC,L]

Web.config重写(不想工作):

    <rewrite>
        <rules>
            <rule name="rule 1G" stopProcessing="false">
                <match url="^(.*)$"  ignoreCase="true" />
                <action type="Rewrite" url="/-"  />
            </rule>
            <rule name="rule 2G" stopProcessing="false">
                <match url="^(.*)$"  ignoreCase="true" />
                <action type="Rewrite" url="//index.php"  />
            </rule>
        </rules>
    </rewrite>

以下是我的Apache测试服务器上的网站:http://villasilvana.hotmintmedia.com 在实时Windows服务器上:http://www.villasilvana.net(更新 - 我必须将实时网站还原为原始网站,因为它仍在使用中)

我在ISS和Web.config上浏览了无数页面,并尝试了重写代码的许多变体,但没有一个有效。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:7)

我知道它有点晚了,但万一其他人正在寻找

<!--web.config url rewrite-->
<configuration> 
  <system.webServer>
      <rewrite>
          <rules>
              <rule name="Redirect To Index" stopProcessing="true">
                  <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>
  </system.webServer>
</configuration>