当用户是 googlebot 时 htaccess 重定向错误
htaccess redirect error when user is googlebot
我用 angularjs
创建了一个网站。当用户是 GoogleBot
时,我想重定向到 PHP
页面,为此我在 htaccess
文件中添加了一些规则。
但是当我从 google 机器人测试时,这个角色不会执行。
我的 htaccess
是:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^my-site.com [NC]
RewriteRule ^(.*)$ http://www.my-site.com/ [L,R=301]
RewriteRule ^(panel|lists)($|/) - [L]
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} (googlebot|InfoSeek|msnbot|Surp) [NC]
RewriteRule ^estate/([0-9]+)/?$ http://www.my-site.com/static-estate.php?id= [NC,L,QSA]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} !ajax
RewriteRule ^(.*)$ /#!/ [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RedirectMatch 301 /%{REQUEST_FILENAME}/(.*) #!/%{REQUEST_FILENAME}/
我希望这个 url
http://www.my-site.com/estate/123/text
重定向到:
http://www.my-site.com/static-estate.php?id=123
当用户 GoogleBot
。但它重定向到
http://www.my-site.com/#!/estate/123/text
并跟随 url 重定向到
http://www.my-site.com/
这里有什么问题?
这一行是错误的:
RewriteRule ^estate/([0-9]+)/?$ http://www.my-site.com/static-estate.php?id= [NC,L,QSA]
因为^estate/([0-9]+)/?$
不会在/estate/123/
之后接受任何东西
确切的正确行取决于 /text
是强制性的还是可选的,但是应该这样做:
RewriteRule ^estate/([0-9]+)(/?|/[a-zA-Z0-9]*)/?$ http://www.example.com/static-estate.php?id= [NC,L,QSA]
我用 angularjs
创建了一个网站。当用户是 GoogleBot
时,我想重定向到 PHP
页面,为此我在 htaccess
文件中添加了一些规则。
但是当我从 google 机器人测试时,这个角色不会执行。
我的 htaccess
是:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^my-site.com [NC]
RewriteRule ^(.*)$ http://www.my-site.com/ [L,R=301]
RewriteRule ^(panel|lists)($|/) - [L]
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} (googlebot|InfoSeek|msnbot|Surp) [NC]
RewriteRule ^estate/([0-9]+)/?$ http://www.my-site.com/static-estate.php?id= [NC,L,QSA]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} !ajax
RewriteRule ^(.*)$ /#!/ [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RedirectMatch 301 /%{REQUEST_FILENAME}/(.*) #!/%{REQUEST_FILENAME}/
我希望这个 url
http://www.my-site.com/estate/123/text
重定向到:
http://www.my-site.com/static-estate.php?id=123
当用户 GoogleBot
。但它重定向到
http://www.my-site.com/#!/estate/123/text
并跟随 url 重定向到
http://www.my-site.com/
这里有什么问题?
这一行是错误的:
RewriteRule ^estate/([0-9]+)/?$ http://www.my-site.com/static-estate.php?id= [NC,L,QSA]
因为^estate/([0-9]+)/?$
不会在/estate/123/
确切的正确行取决于 /text
是强制性的还是可选的,但是应该这样做:
RewriteRule ^estate/([0-9]+)(/?|/[a-zA-Z0-9]*)/?$ http://www.example.com/static-estate.php?id= [NC,L,QSA]