1

有点晚了,但我刚刚从 Isapi Rewrite 版本 2 升级到了版本 3。

我在使用以下样式的规则时遇到问题:

RewriteRule ^/seo-friendly/(\?(.*))? /test/index.cfm?page=home&$2 

在这里,我希望将任何额外的查询字符串参数传递给重写的 URL。

这在 IR2 下运行良好,但无法在 IR3 中传递额外的参数。我有每个版本的正则表达式测试器 .exe 实用程序,所以我尝试了这些。

如果我输入/seo-friendly/?hello=world,IR2 的正则表达式测试器会显示$1: ?hello=world$2: hello=world 这是完美的。

但是 IR3 说$0: /seo-friendly/$1$2是空白的。

看起来我无法访问查询字符串变量。

我发现文档中提到了这个标志:

O(正则化)

在处理之前规范化字符串。规范化包括删除 URL 编码、非法字符等。此外,URI 的 IIS 规范化完全删除查询字符串。因此,如果需要查询字符串,则不应使用规范化

但我没有设置这个标志违反我的规则。我可以设置一个全局规则来停止这种(明显的)规范化吗?

4

1 回答 1

1

如果 ISAPI Rewrite 的工作方式与 Apache 的 mod_rewrite 几乎相同,您只需设置 QSA 标志:

RewriteRule ^/seo-friendly/$ /test/index.cfm?page=home [QSA]
于 2009-07-06T17:44:00.653 回答