我尝试使用.htaccess配置apache,使其仅为搜索引擎搜寻器提供预渲染的页面。我以为我成功了,直到Google将我的页面注册为http://mydomain.fr/prerender。
因此google已将我的预渲染页面很好地注册为mydomain.fr/prerender,但我希望将其注册为mydomain.fr/。这是一个问题,因为当用户从搜索引擎访问它时,他们将转到非javascript功能的预渲染页面。
我应该指出,当我在本地主机上测试该配置时,apache很好地服务了mydomain.fr/上的预渲染页面。
这是我的.htaccess:
<IfModule mod_headers.c>
Header set Cache-Control "no-cache"
</IfModule>
RewriteEngine On
#Serving prerendered main page for crawlers
RewriteCond %{HTTP_USER_AGENT} (aolbuild|baidu|bingbot|bingpreview|adidxbot|msnbot|duckduckgo|mediapartners-google|adsbot-google|adsBot-google-mobile-apps|googlebot|mediapartners-google|teoma|slurp|yandex) [NC]
RewriteRule ^$ /prerender/index.html [L]
#Serving prerendered pages for crawlers
RewriteCond %{HTTP_USER_AGENT} (aolbuild|baidu|bingbot|bingpreview|adidxbot|msnbot|duckduckgo|mediapartners-google|adsbot-google|adsBot-google-mobile-apps|googlebot|mediapartners-google|teoma|slurp|yandex) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /prerender/$1/index.html [L]
#Redirecting to https
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
#Giving full control to front-end routing
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
/ prerender甚至不是我应用程序中的路由,它不是由我的前端路由器(重定向到/ 404)处理的,也不由我的站点地图提供。而且,如果我理解得很清楚,此.htaccess不会重定向搜寻器的请求,它只会提供替代资源。我认为Google没有理由注册/ prerender路线。