.htaccess 带有QSA标志的IIS的htaccess mod_重写规则

.htaccess 带有QSA标志的IIS的htaccess mod_重写规则,.htaccess,mod-rewrite,url-rewriting,iis-8.5,.htaccess,Mod Rewrite,Url Rewriting,Iis 8.5,适用于Windows Server 2012 R2版本6.2的IIS版本8.5 这个.htaccess规则正在我的本地开发人员wamp上运行 RewriteRule ^.*search/?(.*)$ /displayPage.php?page=search&%1 [QSA] 我正在将其导入IIS服务器,并将其重写为: Rewrite ^.*search/?(.*)$ /displayPage.php?page=search&{C:1} 现在,当我提交搜索时,显示的url是:

适用于Windows Server 2012 R2版本6.2的IIS版本8.5

这个.htaccess规则正在我的本地开发人员wamp上运行

RewriteRule ^.*search/?(.*)$ /displayPage.php?page=search&%1 [QSA]
我正在将其导入IIS服务器,并将其重写为:

Rewrite ^.*search/?(.*)$ /displayPage.php?page=search&{C:1}
现在,当我提交搜索时,显示的url是:

页面加载
500错误
。当我禁用规则时,会出现
404错误

编辑规则时,将选中追加查询字符串

因此,我添加了一个var_dump和带有出口的echo,只是为了验证它是否到达
displayPage.php
。事实并非如此

因此,导入的规则似乎配置不正确。我怎样才能修好它

解决方案:

  • 在IIS中打开“编辑规则”窗口

  • 选择测试模式按钮

  • 在“测试模式”窗口中的字段中,将数据输入到文本:search/?keyword=Test+sample&cat=123

  • 结果显示R:1=?关键字=test+sample&cat=123

  • 因此,将规则从{C:1}修改为{R:1}

  • 刷新页面,魔法继续

    重写URL现在如下:
    /displayPage.php?page=search&{R:1}


  • 你为什么不用苹果对苹果呢。从一致性的角度来看,使用相同的平台更有意义。如果要在Apache服务器上开发,应该在真正的服务器上使用Apache服务器。将Apache转到IIS是没有意义的。使用IIS或Apache并保存自己的随机问题。依我看,@PanamaJack这并没有回答这个问题。我明白你们的意思,但我工作的环境就是我来之前的环境,所以我会尽量利用所提供的资源。