首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mod_rewrite QUERY_STRING值到新URL

mod_rewrite QUERY_STRING值到新URL
EN

Stack Overflow用户
提问于 2015-06-23 15:20:08
回答 3查看 108关注 0票数 0

我已经尝试了很多种方法来做这件事,但至今仍无果而终。把我逼疯了。似乎应该比较容易.我需要将流量从旧的应用程序改写为新的应用程序,但是传递的值的格式是不同的。

这个:http://oldapp.com/download.aspx?filename=FILE-01.pdf必须重写这个:https://NEWapp.com/this/that/FILE-01.pdf

因此,我必须从QUERY_STRING (在本例中是FILE-01.pdf )中提取值,并将其合并到新的URL中。在QUERY_STRING中总是只有一个名称/值对,而且总是"download.aspx?filename=“。

看起来很简单,对吧?但我一直想念它。我试过很多很多种:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{QUERY_STRING} filename=([\S\s]+)
RewriteRule ^(.*)$ https://NEWapp.com/this/that/$1 [R,L]

我正在使用IBMHTTPServerv8.0,它基本上是Apache2.2。

解决方案:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{QUERY_STRING} ^filename=([^&]+)
RewriteRule ^(.*)$ https://NEWapp.com/this/that/%1? [R,L]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-23 15:27:44

尝试:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{QUERY_STRING} filename=([^&]+)
RewriteRule ^download.aspx$ https://NEWapp.com/this/that/%1 [R,L]

RewriteCond访问捕获组时,需要使用反向引用运算符%,而不是用于RewriteRule中捕获组的$前缀。

票数 0
EN

Stack Overflow用户

发布于 2015-06-23 15:46:24

在arco444之后,我将在末尾添加一个问号,以确保查询字符串也不会到达url的末尾。

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{QUERY_STRING} ^filename=([^&]+)
RewriteRule ^download.aspx https://NEWapp.com/this/that/%1? [R,L]

如果不添加问号,最终的url将是https://NEWapp.com/this/that/FILENAME.ext?filename=FILENAME.ext

票数 0
EN

Stack Overflow用户

发布于 2015-06-23 18:48:05

解决方案:

看起来,arco444 444的出色答案应该能做到这一点,但是,这才是最终可行的方法:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{QUERY_STRING} ^filename=([^&]+)
RewriteRule ^(.*)$ https://NEWapp.com/this/that/%1? [R,L]

我不明白为什么这样做和在download.aspx上的特定匹配不能工作,但我很高兴有一个解决方案。非常感谢arco444和Dekel。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31006869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档