【问题标题】:Web.config - Rewrite rule for redirecting with multiple queries in one URIWeb.config - 重写规则以在一个 URI 中使用多个查询进行重定向
【发布时间】:2016-09-02 22:54:07
【问题描述】:

我有这个问题,我想重定向 domain.com/profile.php?user=username&page=1

我有一个只重定向到用户查询的规则,但是当我在 web.config 中对这两个查询使用以下规则时,我得到服务器错误 500。我的规则有什么错误吗?

<rule name="rule 2Q">
     <match url="^profile/([^/]*)/([^/]*)"  />
     <action type="Rewrite" url="/profile.php?user={R:1}&page={R:2}"  />
</rule>

编辑:忘了提到我想在网络浏览器中输入的链接是 domain.com/profile/[username]/[pageid]

但网络服务器应将其处理为 domain.com/profile.php?user=username&page=1

【问题讨论】:

  • 这可能有助于显示源网址和目标网址。你说你想直接domain.com/profile.php?user=username&amp;page=1,但你没有说这是来自浏览器的url还是你希望web服务器处理的url。

标签: redirect iis web-config


【解决方案1】:

我不确定您的网络服务器使用哪个正则表达式解析器,但是,我建议一些(PCRE 兼容)可能更合适,/^profile\/(.+)\/(.+)/。如果 url 包含的变体比您描述的多,那么可能需要一个不那么贪婪的正则表达式。

【讨论】:

  • 试过但结果相同
  • 根据我上面的回复,您能确认您使用的是哪个网络服务器吗?此外,添加您的编辑意味着没有尾随/,因此您可以尝试将我的正则表达式修改为/^profile\/(.+)\/(.+),尽管这与您的正则表达式没有本质区别,因此故障可能出在其他配置中,例如@ 987654325@元素。
  • 我使用的是 IIS 8,当我在带有 htaccess 的 Apache 服务器上安装应用程序时,正则表达式从来都不是问题,所以我猜这是 IIS 8 的不同之处
  • 快速浏览了documentation,您的配置看起来大致正确。我想下一个合乎逻辑的步骤是问; 1)你确定所有的组件都安装了吗?该文档提到了 ASP.Net 角色服务。 2)您查看服务器日志是否有任何错误? 3)您是否尝试过按照他们的示例使用测试页面,该示例为您记录了一些变量。最后,您确定您已完全重新启动 IIS。我知道配置更改很有趣。
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
相关资源
最近更新 更多