Web.config 将所有路径重定向到 index.php - 不起作用

Posted

技术标签:

【中文标题】Web.config 将所有路径重定向到 index.php - 不起作用【英文标题】:Web.config redirect all paths to index.php - not working 【发布时间】:2014-01-27 09:17:10 【问题描述】:

我主要使用 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】:

我知道今天有点晚了,但以防万一其他人在看

<!--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>

【讨论】:

如果您的 URL 中有 %2B,这将不起作用。这破坏了我的注册 URL,因为它们在 url 中包含密码。 你能检查我的问题here

以上是关于Web.config 将所有路径重定向到 index.php - 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

.NET:从域和子文件夹重定向到新域,保留路径和查询字符串,在 web.config 中使用 httpredirect

如何通过 Web.config 或 C# 将所有内容重定向到 https://www。网站的版本?

如何通过 web.config 将 http 重定向到 https 并将 www 重定向到非 www?

web.config 重定向到 https 导致重定向循环

301 使用 web.config 将一个域重定向到另一个域

web.config 中的 IIS 重写规则将 HTTPS 请求重定向到 HTTP