问题标签 [isapi-rewrite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
26719 浏览

asp.net - Global.asax 未触发 IIS7 中的 .aspx 页面

我们运行一个链接重定向服务,它可以处理各种格式的链接。其中一种格式是将目标 URL 附加到链接的末尾,例如

http://url.fwd/abcd/http://www.mydomain.com/page.aspx

在过去的两年里,这一直在 Windows Server 2003 / IIS6 机器上工作,但现在我们正试图转移到 Windows Server 2008 / IIS7 设置,但它不再工作了。

我已阅读有关 URL 中冒号的问题,但它不会影响不以“.aspx”结尾的页面。例如,

http://url.fwd/abcd/http://www.mydomain.com/page.php

将重定向罚款。

http://url.fwd/abcd/http//www.mydomain.com/page.aspx

也可以正常工作(注意缺少第二个冒号)。尽管是错误的 URL,但它确实由我们的 URL 转发系统处理,该系统使用自定义 404 页面。在旧系统上,我们遇到了类似的问题,因此在 Global.asax > Application_Error 中编写了一个方法来专门处理“.aspx”的情况,并且效果很好。

在我们的新服务器上,Application_Error 永远不会在 Global.asax 中抛出。相反,我得到一个 System.NotSupportedException -“不支持给定路径的格式”。这个 System.NotSupportedException 是我们在 Global.asax 页面中处理的确切情况,所以它绝对不会被触发。

我已经更改了几个论坛帖子中指出的注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET VerificationCompatibility=1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP|Parameters AllowRestrictedChars=1

我尝试更改 .aspx 的处理程序映射设置。

我尝试将应用程序池设置为使用经典模式而不是集成模式,但这会导致完全不同的错误,即图像和 CSS 等静态内容根本不显示。我已经检查过 Windows 功能中启用了静态内容,并且确实如此。在经典模式下,'.aspx' 请求会引发两个 Bad Request 错误,但绝对没有任何信息。我得到的错误页面的代码是字面意思

错误请求<html><body>错误请求</body></html>

更新:我已将静态文件处理程序映射更改为此页面 http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6中的表单 但是,正如作者正确指出的那样,这是一种 hack,而不是 IIS7 下的正确处理方式。它也只修复了经典模式下的静态文件问题。'.aspx' 页面在经典模式下仍然会抛出错误。

在这一点上,任何想法或输入将不胜感激。

0 投票
1 回答
1232 浏览

asp.net - 使用 ASP.NET 波浪号 (~) 维护 ISAPI 重写路径

我的团队正在从 ASP.NET 3.5 升级到 ASP.NET 4.0。我们目前正在使用 Helicon ISAPI Rewrite 映射http://localhost/<account-name>/default.aspxhttp://localhost/<virtual-directory>/default.aspx?AccountName=<account-name>where<account-name>是查询字符串变量并且<virtual-directory>是虚拟目录(自然)。

在升级之前,波浪号 (~) 解析为http://localhost/<account-name>/...(我希望它这样做),升级后波浪号解析为http://localhost/<virtual-directory>/...导致错误,因为<account-name>需要查询字符串。

我想避免走上用相对路径替换所有内容的道路,因为我们系统中有几个功能使用整个 URL 而不仅仅是相对路径。

值得我在 Windows 7 中使用 IIS7、带有 ASP.NET 4.0 的 Visual Studio 2010 和 64 位 Helicon ISAPI Rewrite。如果我切换回 ASP.NET 3.5 版本,那么它仍然可以正常工作(让我相信 IIS 中没有任何变化,除非它在 ​​4.0 应用程序池中 - 当我在 3.5 和 4.0 之间来回切换时,我必须更改应用程序池在 IIS 中)。

有任何想法吗?提前致谢!

0 投票
3 回答
1760 浏览

apache - ISAPI 重写不使用查询字符串重定向请求

我已经安装了 isapi_rewrite 的完整版本并设置了代理指令,以便文件夹“ngis”(在任何端口上)中到我的工作站的所有流量都转到另一台服务器。这是为了在将 isapi_redirect 推广到我们的产品服务器之前检查适用性的测试目的。

我有一个规则如下:

RewriteRule ^ngis/(.+)$ http://10.2.25.157:8080/ngis/$1 [NC, P]

当我输入如下 URL 时,这非常有效:

http://10.1.111.20:8080/ngis/QueryEngine.ptl/DocTree(%60/2007/MELBOURNE/R01%60,%601%60).xml

但是,如果我输入带有查询字符串的 UIRL,例如:

http://10.1.111.20:8080/ngis/QueryEngine.ptl/DocTree(%60/2007/MELBOURNE/R01%60,%601%60).xml?VIEW=RAW

我收到“找不到页面”错误。

在日志中查看步骤似乎是相同的。这是上面两个请求的日志条目:

如您所见,就 isapi_rewrite 而言,它已经完成了它的工作。但是,我可以确认目标服务器没有收到请求(因为我们当时正在调试它以尝试诊断问题!)

这个问题似乎是由“?”的存在引起的。和一些查询字符串参数。

我已经尝试了 RewriteRule 和 RewriteProxy 并得到了同样的问题。

有任何想法吗?干杯。

0 投票
1 回答
258 浏览

apache - 从 ISAPI 重写迁移到 Mod_REwrite

我目前正在使用 ISAPI 重写

我有兴趣将我的 ColdFusion 应用程序移至 Apache,因此想使用 MOD_Rewrite。这可能吗?还是我需要重写所有的重写?

0 投票
1 回答
806 浏览

iis - 使用 IIS 和 ISAPI 重写强制 HTTPS

我正在努力强制使用 HTTPS,如果用户使用的是 HTTP,请重定向用户。出于某种原因,我的重写规则在我的 prod env 上效果很好,但在我的 dev 上效果不佳,这里是:

在 Prod 上效果很好,它重定向了用户。在 Dev 上,它并没有显示这个非常奇怪的页面:

有没有人看到这个或对这里发生的事情有任何想法/指示?

谢谢

0 投票
1 回答
172 浏览

php - 需要让一个 RewriteRule 与另一个很好地配合,对 mod_rewrite 原理的理解薄弱到令人尴尬

我有以下系统:

Windows Server '03
IIS 6(射击我)
PHP 5.2.14
Wordpress 3.0.1
WPML 1.8.1.2

我已将 Wordpress 添加到现有的高流量站点,在我们将调用的目录中

http://thehost/wordpress/

对于类似 mod_rewrite 的功能,我使用 Helicon 的 ISAPI_Rewrite 3.1.0.76。我正在使用它来启用 Wordpress 安装中的“漂亮”永久链接。唯一的规则是:

RewriteRule ^/wordpress/(?!index.php)(?!wp)([^.]*)$ /wordpress/index.php/$1 [I,L]

然而,我需要添加另一条规则,我的思考和抨击的双重策略都没有取得成果。

我的网站是一个完全双语的网站。没有不在以下两个子目录之一下的页面:

http://thehost/en/用于英语,以及

http://thehost/sp/西班牙语。

这是我想要维护的约定,即使对于 Wordpress 安装也是如此。我目前有一个有点被破解的 WPML(Wordpress 多语言插件)版本,它的工作原理是所有页面和帖子——不管是什么语言——在 URL 中都包含 /en/ 或 /sp/。这让我相信我非常接近——也许只有一个 RewriteRule!——让我的 Wordpress URL 符合与我网站的其他部分相同的 URL 约定。不过,如上所述,我的问题是我无法让它正常工作。

所以,如果我在我的 Wordpress 安装中的某个地方有这个 URL:

http://thehost/wordpress/en/2010/08/omg-this-post-is-in-english/

我怎样才能将其转换为

http://thehost/en/wordpress/2010/08/omg-this-post-is-in-english/

同时不会丢失 Wordpress 的永久链接?我已经设法将 /en/ 交换到正确的位置(^/en/wordpress/(.*) /wordpress/en/$1),但我无法让这两个规则很好地结合在一起。那是我的问题。好吧,这和其他一些不适合 stackoverflow.com 的内容。

谢谢你的时间。

0 投票
2 回答
163 浏览

regex - url重写正则表达式问题

我的 isapi rewrite here 的正则表达式没有在 URL 中传递变量

试图传递一个变量,如:www.domain.com/z34232/ProductName.html?参考=魔术

但是代码忽略了“ref=magic”字符串

任何建议都会非常有帮助。我需要保持字符串的其余部分完好无损。

0 投票
1 回答
1047 浏览

iis - ISAPI 重写 - 忽略子目录

我有一个站点,我使用 ISAPI 过滤器强制从 URL 中删除 index.cfm(即http://www.site.com/index.cfm变为http://www.site.com/)。嗯,这对大多数网站来说都很好,除了网站的密码保护区域(不需要重写,因为网站的这一部分不影响 SEO)。

根据我在线阅读的内容,我需要设置一个重写条件,该条件将忽略删除 index.cfm 扩展名的重写语句。

所以为了清楚起见,我希望重写在http://www.site.com/上正常运行,但在用户导航到这里时不会:http ://www.site.com/workflow/

任何帮助将不胜感激。谢谢你。

编辑:我尝试了 Cade 推荐的规则,但是当我尝试导航到工作流子目录时,似乎仍然删除了 index.cfm。由于某种原因,删除 index.cfm 导致无法登录工作流门户。有什么建议么??

谢谢!

0 投票
3 回答
1378 浏览

wordpress - 在 IIS6 上使用 ISAPI_rewriter 的 mod_rewrite 问题

我希望非 IIS 人员可以帮助我解决这个问题,尽管我遇到的问题是基于运行 ISAPI_Rewriter 的 IIS6 服务器。

情况是我在 IIS6 上运行 Wordpress,ISAPI_Rewriter 被用作 mod_rewrite 的替代品,并且运行正常。我的问题是,当我让它为 Wordpress 重写我的 URL 时(所以我不需要其中的 index.php 文件名)它显示 404。经过大量搜索,我发现问题是因为 ASP.net 的一部分(或类似的东西)正在将 eurl.axd/[random string] 添加到 URL 的末尾,因此这被输入到 Wordpress 请求中并破坏了它。我将 Wordpress 模板设置为输出请求的 URL,它看起来像这样:

http://www.example.com/index.php/about/eurl.axd/b552863f2d5e9841b5d8b79b44ac02e8/

我相信这是因为 IIS 系统中各种事物的优先顺序,而罪魁祸首需要运行项目的另一部分。我更愿意继续使用 ISAPI_Rewriter 来美化 URL,所以我想知道这一点:

有没有办法让 mod_rewrite 在将它输入系统之前删除 eurl.axd/[string] ?

我的 .htaccess 文件目前显示如下:

感谢您提供的所有帮助,我们始终不胜感激。


编辑:根据建议调整了我的 htaccess,从我进行的简短测试来看,它似乎运行良好。已经贴在下面了。

0 投票
1 回答
1578 浏览

windows - 从 ISAPI 重写 3 的 URL 重写中排除某些 URL

我正在 IIS 6 上构建 Drupal CMS 网站,并使用 ISAPI Rewrite 3 使 url 更具可读性。我的问题是我有一个位于 Drupal 站点内的虚拟目录,但它指向 Drupal 网站文件夹之外的本地目录。我不希望 ISAPI Rewrite 重写与此虚拟文件夹有关的 url。例如:

www.domain.com - 重写一切

www.domain.com/pdf/ - 从 url 重写中排除

这可能吗?

其他信息:Drupal 版本 6.19 -- ISAPI Rewrite 3 -- IIS 6 -- Windows Server 2003 R2

编辑 #1:要排除的文件夹包含 pdf 文档。目前,当我尝试通过 url(例如 www.domain.com/pdf/thisdocument.pdf)打开 pdf 时,它给了我一个 404 page not found 错误 - 由 ISAPI Rewrite 处理。