将查询字符串附加到csv文件映射中

时间:2014-12-18 00:35:16

标签: excel url csv

例如,

说我想访问网址:
mydomain.com/sheet.csv?z=abcdefg

查看或下载文件:sheet.csv,其中包含数据集 abcdefg

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

然后查看或下载文件:sheet.csv,其中包含数据集 hijklmn

2 个答案:

答案 0 :(得分:1)

查询字符串参数本身不会执行任何操作。它们只是名称/值对,可以由您尝试请求的端点解析和使用(http动词GET)。

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

正如Mark Setchell在上面的评论中提到的,有关apache重写模块的信息可以在以下位置找到: httpd.apache.org/docs/2.0/misc/rewriteguide.html

如果使用此选项,则规则为

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

答案 1 :(得分:0)

如果您使用的是IIS7 +,则可以配置URL重写模块,以便更改传入的URL字符串以匹配您尝试重定向到的模式。

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

基本上,你告诉IIS要注意模式" ^ sheet.csv?z = ([_ 0-9a-z - ] +)"

如果找到,则将用户退回到" {R:1} /sheet.csv"代替

{R:1}部分是由模式正则表达式的括号定义的动态变量。

因此,重写规则在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>