2014-04-09 24 views
0

我正在使用Wordpress Multisite以及我使用JavaScript构建的一些网页。自然,我的搜索引擎优化很糟糕。所以我创建了myurl.com上托管的phantom.js prerender.io服务:3000.htaccess将Google Bot重定向到通过完整URL的预渲染服务

我正在尝试重定向google bot以使用prerender服务。我需要将完整的url传递到prerender服务,如下所示:http://myurl.com:3000/http://sub.myurl.com/cats/are/cool

正如您所看到的,我使用的是子目录wordpress多站点,因此需要传递子域和域。

第一个问题

这是原来的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] 
... 

只是用于测试,我在我的浏览器,我运行http://myurl.com?_escaped_fragment_=得到这样一个页面:

Not Found 

The requested URL/was not found on this server. 

它甚至不会重定向到http://service.prerender.io。我猜测与wordpress规则存在某种冲突。

更新:这个问题是通过开启mod_proxy的感谢固定,以@乔恩林

第二问题

有一次,我在正确的URL(http://myurl.com:3000)流行,我不知道如何抓住整个URL提供给服务!我google和谷歌,我只能找到有关如何获得域后的url参数的信息。

虽然第一个问题,但第二个只是奖金。我可以在另一个问题中讨论这个问题,因为第一个问题是固定的,所以我能够更好地进行测试。

+1

你确定你已经加载了mod_proxy吗?除非在服务器配置中加载了mod_proxy,否则'P'标志将不会执行任何操作。 –

+0

这样做!对不起,我不知道P旗是什么意思。 – thegreyspot

回答

0

感谢@Jon Lin的mod_proxy答案。

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

https://gist.github.com/thoop/8072354

基本上是:

重写规则 ^((JS |的CSS |的.xml | .LESS |巴纽| JPG格式| .JPEG | .gif注意?!?。 | .PDF | .DOC | .TXT | .ICO |的.rss | .ZIP | MP3播放| .rar程序| .EXE | .WMV | .DOC | .AVI | .PPT | .MPG |文件.mpeg | .TIF |。 (。http://service.prerender.io/http://% {HTTP_HOST(.avi) }%{REQUEST_URI} [P,L]

+0

你看它是如何拥有“http://example.com”,我不能这样做,因为我有时会有子域名。所以它需要从浏览器发送完整的URL。 – thegreyspot

+0

更新了包含%{HTTP_HOST}的答案。让我知道如果这不起作用。 –

+0

好吧,这对我最合适:“http://%{HTTP_HOST}%{REQUEST_URI} [P,L]”。所以我已经把我的prerender服务发送到了一个heroku应用程序。但该服务需要很长时间来回应,谷歌无法抓住任何东西。看到这里:http://damp-dusk-7268.herokuapp.com/http://admissions.wnmu.edu/undergrad/它看起来像它试图找到所有的英雄库服务器上的css文件,而不是wnmu.edu。所以它等待请求超时..我可以让它更快地忽略缺少的请求吗?或者让它在wnmu.edu上查找文件?那是我认为[p]应该做的。感谢您的帮助 – thegreyspot