重定向特定的Url变量

时间:2015-06-23 03:05:04

标签: php .htaccess mod-rewrite redirect

我的网站用于生成以下网址:

/data.php?s=1432862823&type=basic

我修改了程序,因此生成的新网址为:

/d.php?s=1432862823&t=basic

由于有些人已将旧网址加入书签,我想编写一个重写规则,将其转到新网址。

到目前为止我还没有这个:

RewriteEngine  on
RewriteRule    "^/data\.php$"  "/d.php"

但我无法弄清楚如何解释变量。

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^s=([^&]+)&type=([^&]+) [NC] 
RewriteRule ^data.php$ /d.php?s=%1&t=%2 [NC,R,L]

这将从外部重定向请求:

/data.php?s=foo&type=bar 

/d.php?s=foo&t=bar

答案 1 :(得分:1)

编辑:我道歉,我现在才注意到您已将type参数更改为t。因此,此解决方案将无法满足您的需求,除非对于查询字符串参数未更改的URI。我将这个答案留在这里,以便其他人可以从中学习 - 你会惊讶于有多少人不知道查询字符串会自动转移到新目的地。因此,Starkeen的答案是正确的答案。

您可以关注Starkeen的解决方案,该解决方案专门检查查询字符串并将其明确添加到d.php。或者,为简单起见,您可以使用:

RewriteEngine on   
RewriteRule ^data.php$ /d.php [R=302,L]

查询字符串将自动从data.php转移到d.php,您将被重定向。

要使浏览器和搜索引擎永久重定向并进行缓存,请将302更改为301