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?