2014-04-09 55 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