1

我能够使用 index.php 获取旧 URL 以重定向到新的干净 URL

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

但是我一直在尝试破解我的方式来获取没有 index.php 的其他 URL 也重定向到干净的 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 我想让它们都指向一个干净的 URL。

4

1 回答 1

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]
于 2013-05-08T23:07:02.360 回答