我已经尝试了很多种方法来做这件事,但至今仍无果而终。把我逼疯了。似乎应该比较容易.我需要将流量从旧的应用程序改写为新的应用程序,但是传递的值的格式是不同的。
这个: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=“。
看起来很简单,对吧?但我一直想念它。我试过很多很多种:
RewriteEngine On
RewriteCond %{QUERY_STRING} filename=([\S\s]+)
RewriteRule ^(.*)$ https://NEWapp.com/this/that/$1 [R,L]我正在使用IBMHTTPServerv8.0,它基本上是Apache2.2。
解决方案:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^filename=([^&]+)
RewriteRule ^(.*)$ https://NEWapp.com/this/that/%1? [R,L]发布于 2015-06-23 15:27:44
尝试:
RewriteEngine On
RewriteCond %{QUERY_STRING} filename=([^&]+)
RewriteRule ^download.aspx$ https://NEWapp.com/this/that/%1 [R,L]从RewriteCond访问捕获组时,需要使用反向引用运算符%,而不是用于RewriteRule中捕获组的$前缀。
发布于 2015-06-23 15:46:24
在arco444之后,我将在末尾添加一个问号,以确保查询字符串也不会到达url的末尾。
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
发布于 2015-06-23 18:48:05
解决方案:
看起来,arco444 444的出色答案应该能做到这一点,但是,这才是最终可行的方法:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^filename=([^&]+)
RewriteRule ^(.*)$ https://NEWapp.com/this/that/%1? [R,L]我不明白为什么这样做和在download.aspx上的特定匹配不能工作,但我很高兴有一个解决方案。非常感谢arco444和Dekel。
https://stackoverflow.com/questions/31006869
复制相似问题