我主要使用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上浏览了无数页面,并尝试了重写代码的许多变体,但没有一个有效。我将不胜感激任何帮助。
答案 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>