Laravel和AngularJS SEO没有hashbang URL

时间:2014-08-29 11:39:22

标签: angularjs .htaccess laravel-4 seo single-page-application

我为客户端开发了一个带有Laravel后端和AngularJS的网站。 我在AngularJS中启用了html5mode,以便URL没有hashbang。

使用grunt我在snapshots文件夹中创建了快照。共有5页,每页都以snapshot__page.html的形式输出到snapshots文件夹。

我在Larvel routes文件中使用以下代码将所有请求重定向到索引文件,以便Angular可以处理其余的事情。

App::missing(function($exception)
{
    return View::make('index');
});

可以使用

从浏览器访问该网站
http://www.domain.com/ 
http://www.domain.com/page1
http://www.domain.com/page2 

等,快照在

http://www.domain.com/snapshots/snapshot__.html
http://www.domain.com/snapshots/snapshot__page1.html
http://www.domain.com/snapshots/snapshot__page2.html

谷歌声明要包括

<meta name="fragment" content="!">

以便抓取工具按如下方式访问页面。

http://www.domain.com?_escaped_fragment=
http://www.domain.com/page1?_escaped_fragment=
http://www.domain.com/page2?_escaped_fragment=

我们可以为这样的请求提供快照。

我的问题在于.htaccess文件。

即使我使用&#34;?escaped_fragement =&#34;为了测试页面,索引页面被加载。这是Laravel捕获404路线并提供索引页面。 有很多关于如何为URL提供快照的文档?escaped_fragment =出现在URL之间。 这里讨论类似的问题

https://groups.google.com/forum/#!msg/angular/lK8M5bFwbkQ/FN1t1SYD3QkJ .htaccess for SEO bots crawling single page applications without hashbangs

但.htaccess提供的似乎并不起作用。

我的.htaccess文件如下。我正在摆弄.htaccess。

<IfModule mod_rewrite.c>

 ############################################
 ## enable rewrites

Options +FollowSymLinks
RewriteEngine on

#Access site only with www
RewriteCond %{HTTP_HOST}       !domain\.com$
RewriteRule [domain]?(.*) http://www.domain.com/$1 [R=301,L]

#Snapshots for SEO  
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=$
RewriteRule ^(.*)$ /snapshots/snapshot__$1.html [L,NC]


#Laravel Stuff
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]


</IfModule>

1 个答案:

答案 0 :(得分:0)

根据您的上述规范,此行有一个尾随下划线

RewriteCond%{QUERY_STRING} ^ _escaped_fragment _ = $