【问题标题】:Always open index.html of SPA site when entering subpage's url输入子页面的 url 时始终打开 SPA 站点的 index.html
【发布时间】:2017-02-01 14:14:23
【问题描述】:

我有一个单页应用程序 (SPA) 网站。 所有内容都是通过 Ajax 加载的,例如:.load('page/subpage3.html') 顶部的 url 永远不会改变(这是设计使然,我希望我的访问者总是从我写新闻的第一页开始浏览网站)。

从菜单中,用户可以更改出现在菜单下的网站内容。内容文件以 xyz.html 命名,因此它们在我的记事本++ 中显示为格式化并位于子文件夹中。 它们的源代码中没有标题、样式和 js 文件,因为它们附加到我的 index.html 中。 如果用户通过 mysite.com 域打开站点,则一切正常。

(大)问题是 google 使用完整路径列出我的内容页面,就像它们是独立的完整工作页面一样。但是当用户打开这些链接时,只加载了该内容文件,没有任何图片,任何 css 或 js 文件,没有菜单,甚至出现错误的字符,因为这些内容文件中没有指定任何内容。

我的问题是,当单击(/键入)内容页面的 url 时,如何强制“始终打开 index.html”。这些 url(我的子页面 - 内容文件)应该被重定向到我的域名。就像我对 404 错误处理所做的那样。

可能为了解决问题,需要更改 .htaccess 文件(幸运的是,我可以完全访问该文件)。该站点正在 Apache 服务器上运行。

我发现最好的是下一个代码,但我不敢使用/尝试它:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule . index.html [R=302,L]

因为我不知道它是否会破坏任何站点内功能(菜单、照片库……),并且我不确定在这些更改之后谷歌是否能够正常搜索和列出匹配项或它会忽略那些导致重定向的内容页面吗? (或者即使它会起作用,我的页面可能会获得较低的排名?)我想保持整个网站上的谷歌发现与现在相同。谢谢。

【问题讨论】:

    标签: ajax .htaccess redirect single-page-application


    【解决方案1】:

    google 正在使用完整路径列出我的内容页面

    由于您在导航时没有更改 url,可能是 google 太聪明了,并解析了您的脚本以提取子页面的完整路径。如果您只想让用户从头开始导航,您可以使用RewriteCond %{HTTP_REFERER} !<your root url> [NC] 在用户单击其他地方(例如搜索引擎)的深层链接时重定向到根 url(这不会影响来自您自己的网站,但要确保没有直接的超链接,否则您将需要使用其他mechanism来确定它是否是XHR。

    如果您不希望 google 在搜索结果中列出您的深层链接,请使用 robots.txt 限制爬虫,请参阅 this SO thread

    我不知道它是否会破坏任何站点内功能(菜单、照片库……)

    通常人们会将视图(html)和内容(图像、css等)分开放在不同的文件夹中,因此仅重写视图文件夹下的路径不会影响其他内容

    我不确定在这些更改之后谷歌是否能够正常搜索和列出匹配项,或者它会忽略那些导致重定向的内容页面?

    重定向子页面当然会降低 SEO 性能,但是一些框架(例如 Angular、React 等)可以提供变通方法来通过服务器端渲染来解决这个问题。我不确定您使用什么工具来构建您的 SPA,但您可以先尝试Fetch as Google,看看 google 是否可以索引您当前的 SPA。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-31
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多