如何让搜索引擎抓取AJAX内容解决方案_php实例
越来越多的网站,开始采用"单页面结构"(Single-page application)。
整个网站只有一张网页,采用Ajax技术,根据用户的输入,加载不同的内容。
这种做法的好处是用户体验好、节省流量,缺点是AJAX内容无法被搜索引擎抓取。举例来说,你有一个网站。
<code> http://example.com </code>
用户通过井号结构的URL,看到不同的内容。
<code> http://example.com#1 http://example.com#2 http://example.com#3 </code>
但是,搜索引擎只抓取example.com,不会理会井号,因此也就无法索引内容。
为了解决这个问题,Google提出了"井号+感叹号"的结构。
<code> http://example.com#!1 </code>
当Google发现上面这样的URL,就自动抓取另一个网址:
<code> http://example.com/?_escaped_fragment_=1 </code>
只要你把AJAX内容放在这个网址,Google就会收录。但是问题是,"井号+感叹号"非常难看且烦琐。Twitter曾经采用这种结构,它把
<code> http://twitter.com/ruanyf </code>
改成
<code> http://twitter.com/#!/ruanyf </code>
结果用户抱怨连连,只用了半年就废除了。
那么,有没有什么方法,可以在保持比较直观的URL的同时,还让搜索引擎能够抓取AJAX内容?
我一直以为没有办法做到,直到前两天看到了Discourse创始人之一的Robin Ward的解决方法,不禁拍案叫绝。
Discourse是一个论坛程序,严重依赖Ajax,但是又必须让Google收录内容。它的解决方法就是放弃井号结构,采用 History API。
所谓 History API,指的是不刷新页面的情况下,改变浏览器地址栏显示的URL(准确说,是改变网页的当前状态)。这里有一个例子,你点击上方的按钮,开始播放音乐。然后,再点击下面的链接,看看发生了什么事?
地址栏的URL变了,但是音乐播放没有中断!
History API 的详细介绍,超出这篇文章的范围。这里只简单说,它的作用就是在浏览器的History对象中,添加一条记录。
<code> window.history.pushState(state object, title, url); </code>
上面这行命令,可以让地址栏出现新的URL。History对象的pushState方法接受三个参数,新的URL就是第三个参数,前两个参数都可以是null。
<code> window.history.pushState(null, null, newURL); </code>
目前,各大浏览器都支持这个方法:Chrome(26.0+),Firefox(20.0+),IE(10.0+),Safari(5.1+),Opera(12.1+)。
下面就是Robin Ward的方法。
首先,用History API替代井号结构,让每个井号都变成正常路径的URL,这样搜索引擎就会抓取每一个网页。
<code> example.com/1 example.com/2 example.com/3 </code>
然后,定义一个JavaScript函数,处理Ajax部分,根据网址抓取内容(假定使用jQuery)。
<code>function anchorClick(link) {<br> var linkSplit = link.split('/').pop();<br> $.get('api/' + linkSplit, function(data) {<br> $('#content').html(data);<br> });<br> }</code>
再定义鼠标的click事件。
<code> $('#container').on('click', 'a', function(e) {<br> window.history.pushState(null, null, $(this).attr('href'));<br> anchorClick($(this).attr('href'));<br> e.preventDefault();<br> }); </code>
还要考虑到用户点击浏览器的"前进 / 后退"按钮。这时会触发History对象的popstate事件。
<code> window.addEventListener('popstate', function(e) { <br> anchorClick(location.pathname); <br> });</code>
定义完上面三段代码,就能在不刷新页面的情况下,显示正常路径URL和AJAX内容。
最后,设置服务器端。
因为不使用井号结构,每个URL都是一个不同的请求。所以,要求服务器端对所有这些请求,都返回如下结构的网页,防止出现404错误。
<code> <br> <br> <section id="container"></section><br> <noscript> <br> ... ...<br> </noscript> <br> <br> </code>
仔细看上面这段代码,你会发现有一个noscript标签,这就是奥妙所在。
我们把所有要让搜索引擎收录的内容,都放在noscript标签之中。这样的话,用户依然可以执行AJAX操作,不用刷新页面,但是搜索引擎会收录每个网页的主要内容!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Mudah untuk menukar enjin carian dalam Safari, Google Chrome atau penyemak imbas lain pada iPhone atau iPad anda. Tutorial ini akan menunjukkan kepada anda cara melakukannya pada empat pelayar web berbeza yang tersedia pada iPhone dan iPad. Cara Menukar Enjin Carian Safari pada iPhone atau iPad Safari ialah penyemak imbas web lalai pada iOS dan iPadOS, tetapi anda mungkin tidak menyukai enjin carian tersebut. Nasib baik, anda boleh menggunakan langkah ini untuk menukarnya: Pada iPhone atau iPad anda, lancarkan Tetapan daripada skrin Utama. Leret ke bawah dan ketik Safari daripada senarai. Dalam menu seterusnya,

Baidu Cloud ialah perisian yang membolehkan pengguna menyimpan banyak fail Jadi apakah pintu masuk ke enjin carian Baidu Cloud Disk? Pengguna boleh memasukkan URL https://pan.baidu.com untuk memasuki Baidu Cloud Disk Perkongsian pintu masuk terbaru ke enjin carian Baidu Cloud Disk ini akan memberi anda pengenalan terperinci. . Pintu masuk enjin carian cakera awan Baidu 1. Laman web carian Qianfan: https://pan.qianfan.app Menyokong cakera rangkaian: carian agregat, Alibaba, Baidu, Quark, Lanzuo, Tianyi, kaedah paparan cakera rangkaian Xunlei: log masuk diperlukan, ikut syarikat Kelebihan mendapatkan kod pengaktifan: Cakera rangkaian adalah komprehensif, terdapat banyak sumber, dan antara muka adalah mudah. 2. Laman web Maolipansou: alipansou.c

Pembangunan Java: Bagaimana untuk melaksanakan enjin carian dan fungsi mendapatkan semula teks penuh, contoh kod khusus diperlukan Enjin carian dan mendapatkan semula teks penuh adalah fungsi penting dalam era Internet moden. Mereka bukan sahaja membantu pengguna mencari perkara yang mereka inginkan dengan cepat, mereka juga menyediakan pengalaman pengguna yang lebih baik untuk tapak web dan apl. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan enjin carian dan fungsi perolehan teks penuh, dan menyediakan beberapa contoh kod khusus. Carian teks penuh menggunakan perpustakaan Lucene Lucene ialah perpustakaan enjin carian teks penuh sumber terbuka, dibangunkan oleh ApacheSo

Scrapy ialah rangka kerja perangkak berasaskan Python yang boleh mendapatkan maklumat berkaitan dengan cepat dan mudah di Internet. Dalam artikel ini, kami akan menggunakan kes Scrapy untuk menganalisis secara terperinci cara merangkak maklumat syarikat di LinkedIn. Tentukan URL sasaran Mula-mula, kita perlu menjelaskan dengan jelas bahawa sasaran kita ialah maklumat syarikat di LinkedIn. Oleh itu, kita perlu mencari URL halaman maklumat syarikat LinkedIn. Buka laman web LinkedIn, masukkan nama syarikat dalam kotak carian, dan

Pengoptimuman Prestasi Enjin Carian PHP: Cara Ajaib Algolia Dengan pembangunan Internet dan keperluan pengguna yang semakin meningkat untuk pengalaman carian, pengoptimuman prestasi enjin carian telah menjadi penting. Dalam dunia pembangunan PHP, Algolia ialah perkhidmatan enjin carian yang berkuasa dan mudah disepadukan. Artikel ini akan memperkenalkan kegunaan ajaib Algolia dan cara mengoptimumkan prestasi enjin carian PHP melalui Algolia. Pengenalan Algolia Algolia ialah pembekal perkhidmatan enjin carian berdasarkan model SaaS.

Sejak dilancarkan lewat tahun lepas, ChatGPT telah dilihat sebagai ancaman utama kepada cara tradisional mencari maklumat. Kerana ia adalah pelbagai, anda boleh menjawab soalan orang, menulis esei atau puisi, atau menulis kod program. Keupayaan AI perbualan untuk memberikan jawapan yang koheren dianggap sebagai ancaman kepada enjin carian Google, yang selama beberapa dekad telah menjadi platform penanda aras untuk orang ramai mencari maklumat di Internet. ChatGPT OpenAI boleh menyesuaikan jawapan kepada soalan khusus yang ditanya oleh pengguna, yang boleh menjimatkan masa melayari tapak web. Laporan New York Times yang diterbitkan pada bulan Disember mendedahkan bahawa kejayaan semalaman ChatGPT memaksa Google memanggilnya "Kod Merah" dan mula menangani ancaman yang ditimbulkan oleh chatbot kecerdasan buatan kepada perniagaan enjin cariannya. mengikut

Instagram adalah salah satu media sosial paling popular hari ini, dengan ratusan juta pengguna aktif. Pengguna memuat naik berbilion gambar dan video, dan data ini sangat berharga kepada banyak perniagaan dan individu. Oleh itu, dalam banyak kes, perlu menggunakan program untuk mengikis data Instagram secara automatik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menangkap data Instagram dan memberikan contoh pelaksanaan. Pasang sambungan cURL untuk PHP cURL ialah alat yang digunakan dalam pelbagai

Bagaimana untuk menukar enjin carian dalam Google Chrome? Google Chrome ialah penyemak imbas yang sangat popular di kalangan pengguna Ia bukan sahaja mempunyai perkhidmatan yang ringkas dan mudah digunakan, alatan praktikal dan fungsi tambahan yang lain, tetapi juga boleh memenuhi keperluan pengguna yang berbeza secara default kepada Google mahu Bagaimana saya perlu menyediakannya untuk menggantikannya? Jom saya kongsikan caranya di bawah. Kaedah penggantian 1. Klik untuk membuka Google Chrome. 2. Klik ikon tiga titik untuk membuka antara muka menu. 3. Klik pilihan Tetapan untuk memasuki antara muka tetapan penyemak imbas. 4. Cari modul enjin carian dalam antara muka tetapan. 5. Klik butang Urus Enjin Carian. 6. Anda boleh melihat butang tambah Klik butang tambah ini untuk menambah enjin carian. ,
