将查询string追加到csv文件映射中

例如,

假设我想访问url:
mydomain.com/sheet.csv?z=abcdefg

它查看或下载包含数据集abcdefg的文件sheet.csv

然后说我访问的url:
mydomain.com/sheet.csv?z=hijklmn

那么它将查看或下载包含数据集hijklmn的文件sheet.csv

查询string参数本身不做任何事情。 它们只是名称/值对,可以被您正试图请求的端点(http动词GET)parsing和使用。

因此,除非您的sheet.csv实际上是一个程序或一个模糊的API端点,否则将无法将用户redirect到不同的url。 为此,您需要使用重写模块或其他服务器端程序来捕获查询string中的信息,构build新的url并redirect用户的浏览器。

正如Mark Setchell在上面的评论中提到的,关于apache重写模块的信息可以在httpd.apache.org/docs/2.0/misc/rewriteguide.htmlfind。

如果使用这个,规则是

 RewriteRule ^sheet.csv?z=([_0-9a-z-]+) /$1/sheet.csv [R] 

如果您使用的是IIS7 +,则有一个URL重写模块,可以将其configuration为更改传入的urlstring以匹配您尝试redirect到的模式。

http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module

基本上,你告诉IIS注意模式“^ sheet.csv?z = ([_0-9a-z – ] +)

如果find,则将用户反弹为“ {R:1} /sheet.csv”

{R:1}部分是由模式正则expression式的括号定义的dynamicvariables。

因此,重写规则将在web.config文件中看起来像这样。

 <rewrite> <rules> <rule name="Rewrite for sheet.cvs"> <match url="^sheet.csv?z=([_0-9a-z-]+)" /> <action type="Rewrite" url="{R:1}/sheet.csv" /> </rule> </rules> </rewrite>