我怎样才能改变 http://www.domain.ca/directory/file.php?oldkey=2087 至 http://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
检查密钥是否存在于查询字符串中。
答案 0 :(得分:1)
尝试:
RewriteCond %{QUERY_STRING} ^oldkey=([0-9]+)
RewriteRule ^directory/file\.php$ /directory/?id=%1 [L,R=302]