cari
Rumahhujung hadapan webtutorial cssCara melayani subdomain sebagai subdirektori

Cara melayani subdomain sebagai subdirektori

Katakan anda mempunyai laman web yang dibina di atas platform yang cemerlang di reka bentuk dan ia boleh didapati di Example.com. Tetapi platform itu jatuh pendek di blogging. Jadi anda berfikir pada diri sendiri, "Bagaimana jika saya boleh menggunakan platform blog yang berbeza dan menjadikannya tersedia di Example.com/blog?"

Kebanyakan orang akan memberitahu anda yang menentang bagaimana DNS dan laman web sepatutnya berfungsi dan menggunakan subdomain sebaliknya. Tetapi ada manfaat untuk menjaga kandungan anda pada domain akar yang kami tidak dapat dengan subdomain.

Ada cara untuk melayani dua platform yang berbeza pada url yang sama. Dan saya akan menunjukkan kepada anda sos rahsia supaya, pada akhir artikel ini, kami akan membuat blog.example.com berkhidmat sebagai contoh.com/blog.

Mengapa anda mahu melakukan ini

Kerana anda di sini, anda mungkin sudah tahu mengapa ini adalah jalan untuk meneruskan. Tetapi saya ingin memastikan anda berada di sini untuk alasan utama untuk melakukan ini: SEO. Semak 14 kajian kes ini yang menunjukkan hasil positif apabila orang memindahkan subdomain mereka ke subdirektori. Anda mahu blog dan domain anda untuk berkongsi nilai SEO. Meletakkannya di subdomain agak putus hubungan kedua.

Inilah sebab saya, dan menggabungkan dua platform, di mana domain utama berada di WordPress dan subdomain berada di Drupal. Tetapi tutorial ini adalah platform agnostik - ia akan berfungsi dengan hampir mana -mana platform.

Yang mengatakan, pendekatan Cloudflare yang kami tutupi dalam tutorial ini tidak serasi dengan Shopify melainkan anda membayar pelan perusahaan Cloudflare. Itu kerana Shopify juga menggunakan Cloudflare dan tidak membenarkan kami proksi trafik pada peringkat harga percuma mereka.

Langkah 0 (Pratonton)

Sebelum saya melompat, saya ingin menerangkan tahap yang tinggi dari apa yang akan berlaku. Singkatnya, kami akan mempunyai dua laman web: kami yang utama (contoh.com) dan subdomain (blog.example.com). Saya menggunakan "blog" sebagai contoh, tetapi dalam kes saya, saya perlu menggugurkan Drupal dengan jenis kandungan yang berbeza. Tetapi blog adalah kes penggunaan biasa.

Pendekatan ini bergantung kepada menggunakan Cloudflare untuk DNS dan sedikit tambahan sesuatu yang akan memberikan sihir. Kami akan memberitahu Cloudflare bahawa apabila seseorang melawat contoh.com/blog, ia sepatutnya:

  1. memintas permintaan itu (kerana example.com/blog tidak benar -benar wujud),
  2. minta domain yang berbeza (blog.example.com/blog) di belakang tabir, dan
  3. Menyampaikan hasil dari langkah terakhir itu kepada pelawat yang bertopeng melalui example.com/blog.

Baiklah, mari kita menyelam dengan lebih terperinci!

Langkah 1: Menggunakan Cloudflare

Sekali lagi, kami menggunakan Cloudflare untuk DNS. Menunjuk DNS domain anda ada langkah pertama untuk memulakan.

Alasan untuk Cloudflare adalah bahawa ia membolehkan kita membuat pekerja yang mampu menjalankan sedikit kod pada bila -bila masa seseorang melawat URL tertentu (dipanggil laluan yang akan kita buat dalam langkah 3). Kod ini akan bertanggungjawab untuk menukar laman web di belakang tabir.

Cloudflare mempunyai panduan yang sangat baik untuk bermula. Matlamatnya adalah untuk menunjuk domain anda - di mana sahaja ia didaftarkan - kepada nameservers CloudFlare dan mengesahkan bahawa CloudFlare disambungkan dalam akaun CloudFlare anda.

Langkah 2: Buat pekerja

Kod ini akan bertanggungjawab untuk menukar laman web di belakang tabir. Kepala ke pekerja dan klik Buat Perkhidmatan .

Namakan perkhidmatan anda, kemudian pilih "HTTP HANDLER":

Klik Buat Perkhidmatan dan kemudian edit cepat .

Tampal dalam kod berikut dan ganti nama domain dengan anda sendiri pada baris 16 :

 // Dengar setiap permintaan dan balas dengan fungsi kami.
// Nota, ini hanya akan dijalankan pada laluan yang dikonfigurasikan dalam Cloudflare.
addEventListener ('ambil', fungsi (acara) {
  event.respondenwith (handlerequest (event.request))
})

// Fungsi kami untuk mengendalikan respons.
Async Function HandlereQuest (Permintaan) {
  // Hanya mendapatkan permintaan bekerja dengan proksi ini.
  jika (request.method! == 'get')
  pulangan methodNotAllowed (permintaan);
  // URL yang diminta.
  const url = url baru (request.url);
  // Permintaan "URL Asal" aka blog sebenar dan bukannya apa yang diminta.
  // Ini menghidupkan URL mutlak yang meninggalkan jalan relatif tidak berubah. 
  const originUrl = url.toString () .replace ('https://example.com', 'https://blog.example.com');
  // Kandungan halaman asal.
  Const OriginPage = menunggu ambil (asalUrl);
  // Beri respons halaman asal kami.
  const newResponse = Response baru (OriginPage.body, OriginPage); kembali NewResponse;
}

// hei! Dapatkan permintaan sahaja 
Fungsi MethodNotAllowed (permintaan) {
  kembali respons baru (`kaedah $ {request.method} tidak dibenarkan.`, {
    Status: 405,
    Tajuk: {'Benarkan': 'GET'}
  })
}

Akhir sekali, klik Simpan dan Deploy .

Langkah 3: Tambahkan laluan

Sekarang mari kita memaklumkan Cloudflare yang URL (alias laluan) untuk menjalankan kod ini. Kepala ke laman web di Cloudflare, kemudian klik pekerja .

Terdapat bahagian pekerja di skrin utama CloudFlare, di mana anda mengedit kod, dan kemudian ada bahagian pekerja di setiap laman web di mana anda menambah laluan. Mereka adalah dua tempat yang berbeza, dan ia mengelirukan.

Pertama, klik Tambah Laluan :

Kerana kami menambah blog yang mempunyai banyak halaman kanak -kanak, kami akan menggunakan https://example.com/blog*. Perhatikan asterisk bertindak sebagai kad liar untuk dipadankan. Kod ini akan dijalankan di halaman blog dan setiap halaman yang bermula dengan blog.

Ini boleh membawa kesan yang tidak diingini. Katakanlah, sebagai contoh, anda mempunyai halaman yang bermula dengan "blog" tetapi bukan sebahagian daripada blog sebenar, seperti https://example.com/blogging-services. Itu akan dijemput dengan peraturan ini.

Kemudian, pilih pekerja dalam lungsur perkhidmatan .

Kami mempunyai banyak kerja yang dilakukan, tetapi terdapat lebih banyak laluan yang perlu kami tambahkan - CSS, JavaScript, dan laluan fail lain yang blog bergantung kepada (kecuali semua fail dihoskan pada URL yang berbeza, seperti pada CDN). Cara yang baik untuk mencari ini adalah dengan menguji laluan anda dan memeriksa konsol.

Kepala ke https://example.com/blog anda dan pastikan sesuatu dimuatkan. Ia akan kelihatan merosakkan kerana ia kehilangan fail tema. Tidak mengapa buat masa ini, selagi ia tidak menghasilkan ralat 404. Yang penting ialah membuka penyemak imbas anda, api konsol, dan perhatikan semua URL merah yang tidak dapat ditemui atau dimuatkan (biasanya 404 atau 403) yang merupakan sebahagian daripada domain anda.

Anda akan mahu menambah mereka sebagai laluan ... tetapi hanya jalan ibu bapa. Jadi, jika URL merah anda https://example.com/wp-content/themes/file1.css, maka lakukan https://example.com/wp-content* sebagai laluan anda. Anda juga boleh menambah laluan kanak -kanak, jika anda ingin menjadi lebih spesifik, tetapi idea itu adalah menggunakan satu laluan untuk menangkap kebanyakan fail.

Sebaik sahaja anda menambah laluan tersebut, lihat URL anda dan lihat sama ada ia kelihatan seperti subdomain anda. Jika tidak, periksa langkah -langkah sebelumnya. (Kemungkinan anda perlu menambah lebih banyak laluan.)

Adalah lebih baik untuk melakukan pemeriksaan yang berkualiti dengan menavigasi ke beberapa halaman dan melihat jika ada yang hilang. Saya juga mengesyorkan membuka DevTools dan mencari subdomain anda (blog.example.com). Jika itu muncul, anda perlu menambah laluan untuk menargetkan sumber -sumber tersebut atau melakukan sesuatu dengan platform anda untuk berhenti mengeluarkan URL tersebut. Sebagai contoh, platform saya mengeluarkan tag kanonik dengan subdomain saya, jadi saya dapati plugin untuk mengubah suai URL kanonik untuk menjadi domain akar saya.

Langkah 4: Rahsia Sos (NoIndex)

Anda mungkin melihat bahawa kami mempunyai masalah. URL kami boleh didapati di dua URL yang berbeza. Ya, kita boleh menggunakan atribut kanonik untuk memaklumkan Google yang URL adalah "utama" kami, tetapi jangan biarkan ia pergi ke Google untuk memilih yang betul.

Pertama, tetapkan seluruh subdomain anda sebagai NoIndex (cara untuk melakukan ini akan berbeza mengikut platform). Kemudian, dalam pekerja Cloudflare, kami akan menambah baris kod berikut, yang pada dasarnya mengatakan untuk menghapuskan NoIndex apabila URL semasa diakses melalui proksi.

 newResponse.headers.delete ("X-Robots-Tag");

Penyelesaian kod penuh disediakan pada akhir artikel ini.

Langkah 5: Ubah suai tapak

Perkara terakhir yang perlu dilakukan ialah mengubah sitemap subdomain supaya tidak menggunakan subdomain di dalamnya. Cara untuk melakukan ini akan berubah mengikut platform, tetapi matlamatnya adalah untuk mengubah suai asas/mutlak/domain di sitemap anda supaya ia mencetak contoh.com/mypost) dan bukannya blog.exmeple.com/mypost. Sesetengah plugin dan modul akan membolehkan ini tanpa kod tersuai.

Itu sahaja! Penyelesaiannya harus berfungsi!

Batasan

Magic Cloudflare ini bukan tanpa kelemahannya. Sebagai contoh, ia hanya menerima permintaan mendapatkan, bermakna kita hanya boleh mendapatkan sesuatu dari pelayan. Kami tidak dapat menyiarkannya yang digunakan oleh bentuk. Oleh itu, jika anda perlu log masuk atau mengemukakan borang pelawat, akan ada lebih banyak kerja di atas apa yang telah kami lakukan. Saya membincangkan beberapa penyelesaian untuk ini dalam artikel lain.

Seperti yang dinyatakan sebelum ini, satu lagi batasan ialah menggunakan pendekatan ini di Shopify memerlukan melanggan peringkat harga perusahaan Cloudflare. Sekali lagi, itu kerana Shopify juga menggunakan Cloudflare dan menyekat keupayaan untuk proksi trafik pada rancangan mereka yang lain.

Anda juga mungkin mendapat beberapa masalah jika anda cuba menggabungkan dua contoh platform yang sama bersama-sama (contohnya kedua-dua domain peringkat atas dan subdomain menggunakan WordPress). Tetapi dalam kes seperti itu, anda harus dapat menyatukan dan menggunakan satu contoh platform.

Penyelesaian penuh

Inilah kod dalam semua kemuliaannya:

 // Dengar setiap permintaan dan balas dengan fungsi kami.
// Nota, ini hanya akan dijalankan pada laluan yang dikonfigurasikan dalam Cloudflare.
addEventListener ('ambil', fungsi (acara) {
  event.respondenwith (handlerequest (event.request))
})
// Fungsi kami untuk mengendalikan respons.
Async Function HandlereQuest (Permintaan) {
  // Hanya mendapatkan permintaan bekerja dengan proksi ini.
  jika (request.method! == 'get') method balikNotAllowed (permintaan);
  // URL yang diminta.
  const url = url baru (request.url);
  // Permintaan "URL Asal" aka blog sebenar dan bukannya apa yang diminta.
  // Ini menghidupkan URL mutlak yang meninggalkan jalan relatif tidak berubah. 
  const originUrl = url.toString () .replace ('https://example.com', 'https://blog.example.com');
  // Kandungan halaman asal.
  Const OriginPage = menunggu ambil (asalUrl);
  // Beri respons halaman asal kami.
  const newResponse = Response baru (OriginPage.body, OriginPage);
  // Keluarkan "noindex" dari domain asal.
  newResponse.headers.delete ("X-Robots-Tag");
  // Keluarkan cache Cloudflare kerana ia dimaksudkan untuk WordPress.
  // Sekiranya anda menggunakan APO Cloudflare dan blog anda bukan WordPress, (tetapi
  // Domain utama anda adalah), kemudian hentikan apo daripada berjalan pada url asal anda.
  // newResponse.headers.set ("cf-edge-cache", "no-cache"); kembali NewResponse; 
}
// hei! Dapatkan permintaan sahaja 
Fungsi MethodNotAllowed (permintaan) {
  kembali respons baru (`kaedah $ {request.method} tidak dibenarkan.`, {
    Status: 405,
    Tajuk:
    {'Benarkan': 'Dapatkan'}
  })
}

Jika anda memerlukan bantuan di sepanjang jalan, saya mengalu -alukan anda untuk menghubungi saya melalui laman web saya createetoday.io atau periksa YouTube saya untuk demonstrasi video.

Atas ialah kandungan terperinci Cara melayani subdomain sebagai subdirektori. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Helah CSS yang hilang cohost.orgHelah CSS yang hilang cohost.orgApr 25, 2025 am 09:51 AM

Dalam jawatan ini, Blackle Mori menunjukkan kepada anda beberapa hacks yang ditemui semasa cuba menolak had sokongan HTML Cohost. Gunakan ini jika anda berani, supaya anda juga dilabelkan sebagai penjenayah CSS.

Gaya CSS peringkat seterusnya untuk kursorGaya CSS peringkat seterusnya untuk kursorApr 23, 2025 am 11:04 AM

Kursor adat dengan CSS adalah hebat, tetapi kita boleh mengambil sesuatu ke peringkat seterusnya dengan JavaScript. Menggunakan JavaScript, kita boleh beralih antara negeri kursor, letakkan teks dinamik dalam kursor, gunakan animasi kompleks, dan gunakan penapis.

Dunia bertembung: Pengesanan Perlanggaran Kerangka Key menggunakan pertanyaan gayaDunia bertembung: Pengesanan Perlanggaran Kerangka Key menggunakan pertanyaan gayaApr 23, 2025 am 10:42 AM

Animasi CSS interaktif dengan unsur -unsur yang menghilangkan satu sama lain kelihatan lebih masuk akal pada tahun 2025. Walaupun tidak perlu untuk melaksanakan pong dalam CSS, peningkatan fleksibiliti dan kuasa CSS mengukuhkan kecurigaan Lee '

Menggunakan penapis latar belakang CSS untuk kesan UIMenggunakan penapis latar belakang CSS untuk kesan UIApr 23, 2025 am 10:20 AM

Petua dan cara untuk menggunakan harta penapis latar belakang CSS ke antara muka pengguna gaya. Anda akan belajar bagaimana untuk meletakkan penapis latar belakang di antara pelbagai elemen, dan mengintegrasikannya dengan kesan grafik CSS yang lain untuk membuat reka bentuk yang rumit.

SMIL ON?SMIL ON?Apr 23, 2025 am 09:57 AM

Nah, ternyata ciri-ciri animasi terbina dalam SVG ' s tidak pernah ditamatkan seperti yang dirancang. Pasti, CSS dan JavaScript lebih mampu membawa beban, tetapi ia baik untuk mengetahui bahawa SMIL tidak mati di dalam air seperti sebelumnya

'Cantik' berada di mata penonton'Cantik' berada di mata penontonApr 23, 2025 am 09:40 AM

Yay, let ' s melompat untuk teks-wrap: Pretty Landing dalam Pratonton Teknologi Safari! Tetapi berhati -hatilah bahawa ia ' s berbeza dari bagaimana ia berfungsi dalam pelayar kromium.

CSS-Tricks Chronicles XLIIICSS-Tricks Chronicles XLIIIApr 23, 2025 am 09:35 AM

Kemas kini trik CSS ini menyoroti kemajuan yang ketara dalam almanak, penampilan podcast baru-baru ini, panduan kaunter CSS baru, dan penambahan beberapa penulis baru yang menyumbang kandungan berharga.

Ciri tailwind ' s @ply lebih baik daripada bunyiCiri tailwind ' s @ply lebih baik daripada bunyiApr 23, 2025 am 09:23 AM

Kebanyakan masa, orang mempamerkan ciri-ciri Tailwind ' Apabila dipamerkan dengan cara ini, @apply tidak menjanjikan sama sekali. Jadi obvio

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual