Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess重写已被Google索引的重写URL_.htaccess_Seo - Fatal编程技术网

.htaccess htaccess重写已被Google索引的重写URL

.htaccess htaccess重写已被Google索引的重写URL,.htaccess,seo,.htaccess,Seo,例如: 1) URL(一个构造不好的URL)已经被谷歌编入索引: www.abc.com/index.php?product=zzz 2) 使用以下重写规则重写URL: 重写规则^zzz$index.php?product=zzz[L,NC] 上面的操作很好,但我们想告诉Google,页面已经从(1)URL www.abc.com/index.php?product=zzz中的URL永久移动到(2)www.abc.com/zzz中的URL 3) 因此,现在我们在规则(2)之上应用以下规则: Re

例如:

1) URL(一个构造不好的URL)已经被谷歌编入索引:
www.abc.com/index.php?product=zzz

2) 使用以下重写规则重写URL:
重写规则^zzz$index.php?product=zzz[L,NC]

上面的操作很好,但我们想告诉Google,页面已经从(1)URL www.abc.com/index.php?product=zzz中的URL永久移动到(2)www.abc.com/zzz中的URL

3) 因此,现在我们在规则(2)之上应用以下规则:
RewriteCond%{QUERY_STRING}^product=zzz[NC]
重写规则索引?[L,R=301]

这将导致无限循环。我们如何告诉谷歌我们的网站已经从www.abc.com/index.php?product=zzz改为www.abc.com/zzz?还是谷歌自己会这么做

-----导致无限循环的当前完全访问规则:--

RewriteCond%{QUERY_STRING}^product=zzz[NC]
重写规则索引?[L,R=301]


重写规则^zzz$index.php?product=zzz[L,NC]

用以下代码替换现有规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?product=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteRule ^(zzz)/?$ /index.php?product=$1 [L,NC,QSA]

你的解决方案非常有效!您是否愿意解释所涉及的内容,以及与我使用的规则有什么不同?主要区别是使用了表示Apache接收的原始HTTP请求的,并且不会被各种重写规则语句覆盖。您的规则作用于字符串索引,该索引也与重写的URI
index.php?product=zzz
匹配,因此这些规则将进入无限循环。