如何删除任何以'?'开头的内容落后斜线?

时间:2013-01-28 09:12:03

标签: apache mod-rewrite

我的.htaccess中有以下重写规则:

RewriteRule ^([A-Za-z0-9-]+)/?$ product.php?var1=$1
RewriteRule ^([A-Za-z0-9-]+)/?([A-Za-z0-9-_]+)?/?$ product.php?var1=$1&var2=$2
RewriteRule ^([A-Za-z0-9-]+)/?([A-Za-z0-9-_]+)?/?([A-Za-z0-9-_]+)?/?$ product?var1=$1&var2=$2&var3=$3

这是我网站上使用的网址示例::

/electronics/
/electronics/laptops/
/electronics/laptops/hp/

为避免重复内容,我试图消除使用这些网址的任何人:

/electronics/?
/electronics/?qweqwe=fff
/electronics/laptops/?
/electronics/laptops/?q34t5gt=12
/electronics/laptops/hp/?
/electronics/laptops/hp/?id=12&hdhdhdhhd=3333

如何制作301重定向(假设这是避免重复内容的最佳方法),删除任何以“?”开头的内容在尾随斜线之后?

1 个答案:

答案 0 :(得分:0)

我做了很多搜索和测试。我提出了这个解决方案:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^?#\ ]*)\?[^\ ]*\ HTTP/
RewriteRule ^(.*)$ %{REQUEST_URI}? [R=301]