改写

问题描述:

我开发我的网站,让所有页面都通过AJAX动态加载1页上,和一个URL,这样的URL将出现在以下格式:改写

www.website.com/#home 
www.website.com/#news 
www.website.com/#news-details/news-title-goes-here 

我发现后,对我的网页AREN不会出现在搜索引擎中,谷歌机器人不会以这种方式访问​​我。 那么什么是解决它并转换成URL这种形式最简单的方法:

www.website.com/news/news-title-goes-here

难道只有修改的.htaccess做什么?

+0

如果页面是动态加载的,页面上的内容是否也是动态生成的? – userDEV 2014-11-05 13:48:42

+0

是的,一切都从数据库中带来 – 2014-11-05 13:51:14

+0

您是否尝试过在谷歌站长工具中提交站点地图? http://www.feedthebot.com/dynamicpages.html – userDEV 2014-11-05 13:52:38

我跟着这个链接:

https://developers.google.com/webmasters/ajax-crawling/ 

转换了所有我的动态页面出现在这样:

www.website.com/#!home 
www.website.com/#!news 
www.website.com/#!news-details/news-title-goes-here 

(!加入哈希后)

然后产生动态的Html快照。 (但是,我只在1个文件html快照中制作了它们。PHP) 所以现在我有2种类型的URL:

丑之一:

www.website.com/html-snapshot.php?_escaped_fragment_=news-details/news-title-goes-here 

和漂亮的一个:

www.website.com/#!news-details/news-title-goes-here 

我添加了所有漂亮的URL转换成一个网站地图,并提交在Google网站管理员中,并在网站管理员工具“抓取Google”中抓取所有丑陋的内容。

总而言之,Google现在正在看到我所有的ajax页面。

的问题是,谷歌是越来越糊涂。你可能无意中偶然发现了隐形情况。

如果你看一下那些对一个网页(如新闻网站)的动态内容加载其他网站,这些内容最终被链接回另一个内容页(与它自己的URL)。当你介绍英镑/井号到您的网址,谷歌看到,由于在同一页它是在之前的定位点(这是一个URL的传统公认使用散列),并希望看到所有的相同内容的。如果你关注这个散列并加载全新的内容,这会导致Google感到困惑。

如果Google正在访问相同的URL并从AJAX调用中获取不同的内容,并且它不能发现不同的内容实际上来自不同的“页面”,Google可能会将其解释为隐藏并丢弃您的页面来自索引。

这里是另一回事,你可以尝试一下; hashbang网址:https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

+0

和解决方案不重写所有我的代码? – 2014-11-05 14:28:19

+1

你尝试过祈祷吗? 说真的,我认为你处在一个艰难的地方,没有简单的出路。你可以尝试或许键入不同于哈希符号的其他字符,因为这已经建立。它可能有用,但它可能不会。 我一直在与谷歌做搜索引擎优化/在线营销10 - 15年,在数百个各种规模的网站上工作搜索引擎优化。我一次又一次学会了一件事。对于设计/用户体验/好看的好东西通常对搜索引擎优化和搜索引擎不太好。此外,即使谷歌能够解决这个问题,Bing /雅虎也不是那么聪明,他们会驱动20-30%的流量。 – Robert82 2014-11-05 14:55:59

这是一个非常基本的SEO VS coolnes问题。 如果您想保持页面的行为方式,可以并行添加静态版本。

在htacess路线的任何请求返回你的index.php,你可以选择输出基于这样的价值观的内容下面的代码。

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* /index.php 

而坐着火车(无聊),所以请原谅,如果格式是不完美的,我有我的电话写这篇;)

编辑: 我差点忘了;当使用这种方法时,你会得到这样的网址: $ url = $ _SERVER [“REQUEST_URI”];