我在IIS上使用Iconic的IIRF URL Rewriting Engine,“花哨”的网址是这样的:
http://some-website.com/some-function/418/some-keyword-rich-filename.html
此示例网址对应于:
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
这就是我需要原始网址进行比较的原因。
答案 0 :(得分:6)
对于IIRF,这称为 unmangling ,可以使用修饰符U
来实现。
来自IIRF manual:
U =将原始网址存储在服务器中 变量HTTP_X_REWRITE_URL
只需将修饰符U
添加到您要保留原始网址的RewriteRule
即可。例如:
RewriteRule ^/some-function/(\d+)/(.*)$ /some-function.asp?SOME-ID=$1 [I,U,L]
然后,在您的网页代码some-function.asp
中,您可以像这样访问原始网址(经典ASP):
Request.ServerVariables("HTTP_X_REWRITE_URL")