重定向没有index.php和参数的旧网址

时间:2013-05-08 22:08:55

标签: .htaccess url rewrite

我能够通过index.php获取旧网址,以重定向到我的新网址

例如:example.com/index.php?gender=m&height=70&weight=150 至 example.com/men/70-inches/150-lbs /

然而,我一直试图破解我的方式获取其他URL而没有index.php也重定向到干净的URL

例如:example.com/?gender=m&height=70&weight=150 至 example.com/men/70-inches/150-lbs /

我目前使用index.php重定向URL,看起来像这样:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?gender=m&height=([0-9-]+)&weight=([0-9-]+)
RewriteRule ^index\.php$ /men/%1-inches/%2-lbs/? [L,R=301]

我试过这个,对于没有index.php的URL,但它不起作用:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?gender=m&height=([0-9-]+)&weight=([0-9-]+)
RewriteRule ^/$ /men/%1-inches/%2-lbs/? [L,R=301]

问题是谷歌已经使用example.com/?gender=m&height=70&weight=150索引了我的一大堆页面,我想让他们都指向一个干净的网址。

1 个答案:

答案 0 :(得分:1)

您有正确的想法,但您的重写规则模式不起作用:^/$。通过htaccess文件中的规则发送的URI删除了前导斜杠,因此永远没有/ URI,它只是空白:

# no slash---v
RewriteRule ^$ /men/%1-inches/%2-lbs/? [L,R=301]

所以整个事情应该是:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?gender=m&height=([0-9-]+)&weight=([0-9-]+)
RewriteRule ^$ /men/%1-inches/%2-lbs/? [L,R=301]