我有两种类型的网址:
http://www.example.com/?content=contact_form.php
和
http://www.example.com/?content=product.php&id=20
我改变了我的整个网址系统:
http://www.example.com/file/contact_form
和
http://www.example.com/product/I-m-the-title/20
当然,我使用.htaccess
进行了301重定向,以告诉Google和他。新网址。
我这样做了:
# Rewrite URLs
RewriteEngine On
RewriteRule ^(ignore)($|/) - [L]
RewriteRule ^file/([^/]*)$ /?content=$1.php [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /?content=$1.php&title=$2&id=$3 [L]
# Redirect old URL to new URL
RewriteCond %{QUERY_STRING} ^content=contact\_form\.php$
RewriteCond %{REQUEST_URI} ^\/$
RewriteRule .* http://www.example.com/file/contact_form? [R=301,L]
RewriteCond %{QUERY_STRING} ^content=product\.php&class=I-m-the-title$
RewriteCond %{REQUEST_URI} ^\/$
RewriteRule .* http://www.example.com/I-m-the-title/Test/20? [R=301,L]
我的问题:
完美适用于:http://www.example.com/?content=product.php&id=20
但是对于http://www.example.com/?content=contact_form.php
我收到的消息是由于重定向太多而导致无法打开。
有人知道我做错了什么吗?我希望任何人都可以尽快帮助我,因为我必须在谷歌误解之前解决它。
答案 0 :(得分:0)
您的规则会导致无限循环,因为它会一次又一次地将您的uri重写到同一位置,从而覆盖内部和外部重定向。要修复重写循环,请在htaccess的顶部添加以下内容
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]