IIS URl Rewrite 工作不一致吗?

IIS URl Rewrite 工作不一致吗?

我在 IIS 7 中遇到了 URL 重写问题。这是我的 Web.config(如下所示)。您将看到“导入的规则 3”,它捕获对 /sitemap.xml 的访问尝试并将其重定向到 /sitemap/index。该规则效果很好。

其正下方是导入的规则 4,该规则会抓取对 /wlwmanifest.xml 的访问尝试,并将其重定向到 /mwapi/wlwmanifest。该规则不起作用。

(顺便说一句,我知道这是“重写”而不是“重定向”——这就是我想要的)。

那么...为什么两个配置相同的规则不能以相同的方式工作?顺序没有区别;即使位于第一个位置,导入的规则 4 也不起作用。

谢谢您的任何建议!

编辑:让我以 .htaccess 格式表示规则,这样它们就不会被吃掉:)

RewriteEngine On

# skip existing files and folders
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# get special XML files
RewriteRule ^(.*)sitemap.xml$ /sitemap/index [NC]
RewriteRule ^(.*)wlwmanifest.xml$ /mwapi/index [NC] 

# send everything to index
RewriteRule ^.*$ index.php [NC,L]

“sitemap”重写规则工作正常;“wlwmanifest”规则返回“未找到”。很奇怪。

答案1

您的规则未包含在您的帖子中,但需要检查的一件事是,列表中任何较高位置的规则是否首先捕获它,这会让您感到困惑。

答案2

搞清楚了。Web 应用程序在 Zend Framework 上运行,仅拥有 .htaccess 规则是不够的,因为 Zend 有自己的内部路由规则需要设置。所以我的中间两条规则甚至没有必要,因为它们必须在 Zend 的路由中配置。

相关内容