mod将旧url重写为新url,更改参数名称但保留值

时间:2014-08-05 20:06:39

标签: .htaccess mod-rewrite

我怎样才能改变 http://www.domain.ca/directory/file.php?oldkey=2087http://www.domain.ca/directory/?id=2087

我想更新URL以删除旧文件名并更改参数键但保持值相同。

我尝试了很多组合,但到目前为止我没有试过给我这个结果。我的所有搜索都会产生不同问题的解决方案,并将查询更改为目录,或更改参数值,但不会更改参数键。

最近的尝试:

#Redirect 302 (.*)file\.php\?oldkey$ http://www.domain.ca/directory/?id$1

Options +FollowSymlinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain\.ca/directory/file\.php?oldkey=$ [NC]
RewriteRule ^(.*)$ http://www.domain.ca/directory/id=$1 [R=302,L]

RewriteCond %{QUERY_STRING} (^|&)deal=(&|$)
RewriteRule ^oldkey=$ /$0?id= [R=302,L]

我现在正在使用302,直到我使用它然后将更改为301以获得持久性。

提前致谢!

更新:

我已经尝试了一些看起来很有希望的版本,但仍无济于事。我希望在正确的轨道上吗?

RewriteCond %{QUERY_STRING} ^oldkey=(.*)$ [NC]
RewriteRule ^/directory/$ /directory/directory2/?id=%1 [NC,L] #R=302 - for now

但没有任何事情发生。这就像规则被忽略了。如果钥匙存在,它不应该开火吗? 我甚至还在上面加上:

RewriteCond %{QUERY_STRING} oldkey

检查密钥是否存在于查询字符串中。

1 个答案:

答案 0 :(得分:1)

尝试:

RewriteCond %{QUERY_STRING} ^oldkey=([0-9]+)
RewriteRule ^directory/file\.php$ /directory/?id=%1 [L,R=302]