Wordpress .htaccess将Google Bot重定向到通过完整URL的预呈现服务

Wordpress .htaccess将Google Bot重定向到通过完整URL的预呈现服务,wordpress,.htaccess,redirect,Wordpress,.htaccess,Redirect,我正在使用Wordpress Multisite,我的一些页面是用javascript构建的。很自然,我的搜索引擎优化很糟糕。因此,我在myurl.com:3000上创建了一个phantom.js prerender.io服务 我正在尝试重定向google机器人程序以使用prerender服务。我需要将完整的url传递到prerender服务,如下所示: 如您所见,我正在使用子目录wordpress multisite,因此需要传递子域和域 第一个问题 这是原始的wordpress.htacce

我正在使用Wordpress Multisite,我的一些页面是用javascript构建的。很自然,我的搜索引擎优化很糟糕。因此,我在myurl.com:3000上创建了一个phantom.js prerender.io服务

我正在尝试重定向google机器人程序以使用prerender服务。我需要将完整的url传递到prerender服务,如下所示:

如您所见,我正在使用子目录wordpress multisite,因此需要传递子域和域

第一个问题 这是原始的wordpress.htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
我试着用这个:

RewriteEngine On
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteRule ^(.*) http://service.prerender.io/http://example.com [P,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
...
为了进行测试,我在浏览器中运行,得到如下页面:

Not Found

The requested URL / was not found on this server.
它甚至似乎都没有重定向到。我猜这与wordpress的规则有些冲突

更新:由于@Jon Lin

第二个问题 一旦我弹出正确的url(),我就不知道如何获取整个url以提供给服务!我已经谷歌和谷歌,我只能找到有关如何获得域后url参数的信息


第一个问题是第一个问题,第二个问题是唯一的好处。当我能够更好地测试它时,我可以在另一个问题中讨论这个问题,因为第一个问题已经解决。

感谢@Jon Lin提供的mod_代理答案

对于第二个答案,请检查以下要点,了解获取整个URL以提供给服务的重写规则。它会进行快速检查,以确保您最有可能查看html文件,然后在请求末尾添加整个URL

基本上:

重写规则 ^(?!...........................................................................................................................................12444 4日日日日日日日日日日日日日日日日日日日....日日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.日.mp4.m4a.swf.dat.dmg.iso.flv.m4v.torrent)() {HTTP_HOST}%{REQUEST_URI}[P,L]


您确定已加载mod_代理吗?
P
标志不会起任何作用,除非您在服务器配置中加载了mod_代理。就是这样!对不起,我不知道P标志代表什么。你看它是如何有“”的,我不能有它,因为我有时会有子域。因此它需要从浏览器发送完整的url。更新了答案以包含%{HTTP_HOST}。如果不起作用,请告诉我。好的,这对我来说最有效:“http://%{http_HOST}%{REQUEST_URI}[P,L]”。因此,我已将预渲染服务发送到heroku应用程序。但这项服务的响应时间太长,以至于谷歌无法获取任何信息。请看这里:它似乎试图查找heroku服务器上的所有css文件,而不是wnmu.edu。所以它会等待请求超时。。我可以让它更快地忽略丢失的请求吗?或者让它查找wnmu.edu上的文件?这就是我认为[p]应该做的。谢谢你的帮助是的,我做了更多的测试。非常奇怪,通过prerender加载我的网站需要很长时间,我尝试在heroku实例上运行默认值,但仍然需要很长时间。不过,它似乎在service.prerender.io上加载ok。知道有什么不同吗?好的。我会用你的评论更新我的答案。您是否通过服务器代理请求,而不是转到浏览器中的URL?当通过服务器代理(并使用上面的正则表达式)时,它应该只发送对页面的请求,而不是css。