3

我在 IIS 上使用 Iconic 的IIRF URL 重写引擎,“花哨”的 URL 是这样的:

http://some-website.com/some-function/418/some-keyword-rich-filename.html

此示例 URL 对应于:

http://some-website.com/some-function.asp?SOME-ID=418

现在在 some-function.asp 文件中,我需要知道浏览器请求的页面。我浏览了所有 IIS 变量,但无法/some-function/418/some-keyword-rich-filename.html在其中任何一个变量中找到值。

作为旁注,我需要此信息将 301 重定向发送到浏览器。例如,如果浏览器请求:

http://some-website.com/some-function/418/index.html

我首先需要将浏览器发送到:

http://some-website.com/some-function/418/some-keyword-rich-filename.html

这就是为什么我需要原始网址进行比较。

4

1 回答 1

6

对于 IIRF,这称为unmangling,可以通过使用修饰符来实现U

来自IIRF 手册

U = 将原始 url 存储在服务器变量 HTTP_X_REWRITE_URL 中

只需将修饰符添加URewriteRule您想要保留原始 url 的位置。例如:

RewriteRule ^/some-function/(\d+)/(.*)$ /some-function.asp?SOME-ID=$1 [I,U,L] 

然后,在您的页面代码中some-function.asp,您可以像这样访问原始 url(经典 ASP):

Request.ServerVariables("HTTP_X_REWRITE_URL")
于 2011-03-25T12:48:11.253 回答