prerender.io .htaccess 变量 - Reactjs CRA
prerender.io .htaccess variable - Reactjs CRA
我为 CRA 设置了 prerender.io,它运行良好,但是当 bot 在没有参数的情况下点击 URL 时,它会放在 URL 的末尾 - 字符串“.var”
我尝试了 (.*) 的变体,但它似乎不起作用。有什么想法吗?
这是 .htaccess 文件
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/ [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<IfModule mod_headers.c>
RequestHeader set X-Prerender-Token "TOKEN"
RequestHeader set X-Prerender-Version "prerender-apache@2.0.0"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
<IfModule mod_proxy_http.c>
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{REQUEST_URI} ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff|\.svg))
RewriteRule ^(index\.html|index\.php)?(.*) https://service.prerender.io/%{REQUEST_SCHEME}://%{HTTP_HOST}/ [P,END]
</IfModule>
</IfModule>
最近@MrWhite 给了我们另一个更好、更简单的解决方案——只需将 DirectoryIndex index.html
添加到 .htaccess 文件即可。
从一开始我就写道 DirectoryIndex
正在运行,但没有!
当你尝试 prerender.io 时它似乎工作正常,但实际上它显示的网站是这样的:
我不得不删除它。
所以这不是 .htaccess 文件的问题,它来自服务器。
我所做的是进入 WHM->Apache 配置->DirectoryIndex 优先级,我看到了这个列表
是的,就是这样!
为了修复,我只是将 index.html
移动到最上面的第二个 index.html.var
,然后是其余的。
我不知道 index.html.var
是干什么用的,但我没有冒险删除它。希望能帮到和我一样挣扎的人。
我为 CRA 设置了 prerender.io,它运行良好,但是当 bot 在没有参数的情况下点击 URL 时,它会放在 URL 的末尾 - 字符串“.var”
我尝试了 (.*) 的变体,但它似乎不起作用。有什么想法吗?
这是 .htaccess 文件
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/ [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<IfModule mod_headers.c>
RequestHeader set X-Prerender-Token "TOKEN"
RequestHeader set X-Prerender-Version "prerender-apache@2.0.0"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
<IfModule mod_proxy_http.c>
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{REQUEST_URI} ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff|\.svg))
RewriteRule ^(index\.html|index\.php)?(.*) https://service.prerender.io/%{REQUEST_SCHEME}://%{HTTP_HOST}/ [P,END]
</IfModule>
</IfModule>
最近@MrWhite 给了我们另一个更好、更简单的解决方案——只需将 DirectoryIndex index.html
添加到 .htaccess 文件即可。
从一开始我就写道 DirectoryIndex
正在运行,但没有!
当你尝试 prerender.io 时它似乎工作正常,但实际上它显示的网站是这样的:
我不得不删除它。 所以这不是 .htaccess 文件的问题,它来自服务器。
我所做的是进入 WHM->Apache 配置->DirectoryIndex 优先级,我看到了这个列表
是的,就是这样!
为了修复,我只是将 index.html
移动到最上面的第二个 index.html.var
,然后是其余的。
我不知道 index.html.var
是干什么用的,但我没有冒险删除它。希望能帮到和我一样挣扎的人。