如何为启用 javascript 和非启用 javascript 的站点创建两个平行的站点?

Posted

技术标签:

【中文标题】如何为启用 javascript 和非启用 javascript 的站点创建两个平行的站点?【英文标题】:how to Make two parallel universe of site for javascript-enable and non-javascript-enable? 【发布时间】:2019-01-11 18:12:17 【问题描述】:

我想创建两个版本的网站,其中一个适用于 javascript-enabled 用户,另一个适用于 non-javascript-enabled 。在 javascript-enabled 版本中,我使用 AJAX 加载所有爬虫无法访问的内容。我想使用下面的代码将页面重定向到 non-javascript-enabled 版本:

<noscript>
 <meta http-equiv="refresh" content="0; url=https://example.org?noscript=true" />
</noscript>

我还想在索引页面中放一些 php 脚本来检查 url 参数。 这是我的 PHP 代码:

<?php 
 if ($_GET['noscript'] == "true") 
  // This is non-javascript-enabled version
  // Show all content here using WP_QUERY function

?>

现在我有一个问题。 google crawler 是否使用 non-javascript-enabled 版本访问内容?

【问题讨论】:

【参考方案1】:

我认为两者兼而有之。它肯定会运行一些 JavaScript,但我也看到它显示了 &lt;noscript&gt; 元素内的内容结果,所以它可能会工作。

但是,您提供的 html 无效。大多数浏览器可能会接受它,但it isn't strictly valid HTML。相反,您应该使用this question 中的解决方法。

感谢您尝试为您的网站提供非 JavaScript 版本。即使 AJAX 获取的静态内容不是创建网站的最佳方式(通常最好将所有内容都保存在其中,但用 CSS 隐藏其中的一些内容),最好尝试为每个人提供完整的体验而不是把一些人丢在一边。

【讨论】:

即使启用了 javascript,谷歌爬虫也能访问内容吗? 是的。不过,我不知道它将使用哪个版本的网站来获取内容。 这样好吗? &lt;!DOCTYPE html&gt; &lt;html lang="en" dir="ltr"&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;This is a test page !&lt;/title&gt; &lt;?php if (!isset($_GET['jsenabled'])) echo "&lt;script&gt; var hostorigin = window.location.origin; window.location.href = hostorigin + '/facecartesting.php?jsenabled=true'; &lt;/script&gt;"; ?&gt; &lt;/head&gt; &lt;body&gt; &lt;?php if (isset($_GET['jsenabled'])) echo "JavaScript is enabled !"; else echo "JavaScript is disabled !"; ?&gt; &lt;/body&gt; &lt;/html&gt; @MortezaJamali 这是一个绝妙的方法!您应该将其添加为答案。不过有一个小改进;如果您的内容被放在页面上它)并避免必须拥有两个不同版本的页面。

以上是关于如何为启用 javascript 和非启用 javascript 的站点创建两个平行的站点?的主要内容,如果未能解决你的问题,请参考以下文章

如何为dataTables启用多列过滤器?

如何为 PHP CLI 启用颜色?

如何为 Django 启用 WSGIPassAuthorization?

如何为特定目录或文件启用特定 gcc 警告? [复制]

如何为 UIScrollView 启用方向锁定?

如何为站点网格启用日志