我能够通过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
索引了我的一大堆页面,我想让他们都指向一个干净的网址。
答案 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]