我已經構建了一個AngularJS應用程序,它包含的視圖可以被認爲是不同的頁面,但該應用程序是單頁面應用程序,因爲該頁面不會重新加載。Ajax生成的內容和Facebook抓取
我已閱讀過使用轉義片段URL將搜索引擎重定向到頁面快照。我的問題是,當我嘗試在Facebook上分享我的應用中的一個頁面時,它返回一個404,如使用Facebook's open graph debug tool可以看到的。
我的應用程序有一個Larvel後端饋送到AngularJS前端,我的htaccess看起來像這樣將蜘蛛和Facebook重定向到快照。據我所知,這是工作,但我想這不是。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /%1? [NC,PT]
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
</IfModule>
我的網址被格式化爲喜歡的用戶:domain.com/#!/bike/id/bike+name 和快照的URL是相同的只是沒有散列砰即domain.com/bike/身份證/自行車+名稱
我真的愣在這一個。任何建議或指針將不勝感激。
我不確定您是否已經在後端嘗試類似的東西(不知道Larvel,我使用NodeJS/Express)。無論如何,這個問題必須在後端解決,而不是Angular。 – NicolasMoise
我想我會幫你。我試着做同樣的事情,但是因爲我在使用#!我可能試圖做的網址略有不同。所以你不需要將機器人重定向到服務器端頁面,因爲你使用的URL結構幾乎相同,並且抓取工具被髮送到服務器生成的頁面,對吧? – BarryWalsh
是的,你只需要找出一種方法讓你的服務器解釋你的url的'#!/ bike/id/bike + name'部分當用戶發出初始請求 – NicolasMoise