Apache重写问题。无法找出查询字符串

时间:2014-01-14 14:24:56

标签: regex apache .htaccess mod-rewrite

所以我一直在努力寻找与此重写相匹配的规则。我正在一个客户端网站上工作,这是一个重复标题标签数量的噩梦。我通过强制执行正斜杠,重定向非www来设法解决了大部分问题。到www。版本并禁止抓取网站的https版本。

我目前遇到的问题。我有超过1000个重复内容的网址,每个产品都有两个不同的网址,内容完全相同。一个例子是:

http://www.example.co.uk/product/widget1/
http://www.example.co.uk/widget1/
http://www.example.co.uk/product/widget2/
http://www.example.co.uk/widget2/

现在,以下网址具有相同的内容:

http://www.example.co.uk/product/widget1/
http://www.example.co.uk/widget1/

如果有意义,我想将包含“/ product /”的任何网址重定向到网址中没有“/ product /”的网址版本。老实说,我不知道从哪里开始,非常感谢你的帮助。

提前致谢

编辑:推荐规则:

RewriteEngine On RewriteRule ^ / product /(.*)$/ $ 1 [R = 301]

不起作用。这可能是矛盾的。这些是其他规则:

RewriteEngine On
RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*)$ /$1? [R=301,L]
RewriteRule ^/product/(.*)$ /$1 [R=301]
RewriteCond %{HTTP_HOST} ^example\.co [NC]
RewriteRule (.*) http://www.example.co.uk/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$        /$1$2/ [L,R=301]

我不知道这里是否有任何冲突。请帮忙

2 个答案:

答案 0 :(得分:1)

假设网址始终以产品开始,这应该有效:

RewriteEngine On
RewriteRule ^/product/(.*)$ /$1 [R=301]

它需要进入你的主站点conf或.htaccess

答案 1 :(得分:1)

像这样拥有完整的.htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.co [NC]
RewriteRule (.*) http://www.example.co.uk/$1? [L,R=301]

RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*)$ /$1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?[^/])$ /$1/ [L,R=301]

RewriteRule ^product/([^/]+)/?$ /$1/ [R=301,L]