Rumah  >  Soal Jawab  >  teks badan

URL mesra Inggeris dan Sepanyol dalam PHP dan htaccess

Saya mempunyai tapak web dalam bahasa Inggeris dan Sepanyol, setiap bahasa mempunyai folder sendiri, contohnya:

news.com/en/ for English
news.com/es/ for Spanish

Senarai berita terkini dipaparkan di:

news.com/en/latest-news.php for English
news.com/es/ultimas-noticias.php for Spanish

Apabila pengguna mengklik pada artikel untuk membaca keseluruhan artikel, mereka dipautkan untuk membaca keseluruhan artikel dari sini (menggunakan slug yang disimpan dalam MySQL) seperti ini (sebagai contoh):

news.com/en/general/news/europe/2022/10/22/this-is-a-nice-title

Semua artikel menggunakan halaman berikut untuk slug:

news.com/en/read-article.php for English
news.com/es/leer-noticia.php for Spanish

Pada halaman ini, skrip menanyakan MySQL untuk mencari slug dan memaparkan artikel penuh. Masalahnya ialah atas sebab tertentu saya tidak faham saya tidak mendapat apa-apa keputusan.

Jika saya mengalihkan fail ke direktori akar:

news.com/read-article.php for English
news.com/leer-noticia.php for Spanish

Kemudian ia berfungsi dengan baik, tetapi menambah fail ini ke dalam subfolder saya tidak mendapat sebarang hasil.

Yang penting, slug disimpan dalam MySQL seperti ini:

general/news/europe/2022/10/22/this-is-a-nice-title

Oleh kerana ia kelihatan lebih baik daripada sempang dan tarikh adalah tarikh ia diterbitkan, ia akan berubah dengan setiap siaran.

Ini ialah kod .htaccess yang saya buat untuk subfolder ini:

Kemas kini: Masalahnya hanya dalam htaccess dan walaupun saya menjawab soalan saya sendiri, ia masih belum selesai sepenuhnya

RewriteEngine On

RewriteRule ^(en)/([a-zA-Z0-9-]+)$ /read-article.php?id= [L]

RewriteRule ^(es)/([a-zA-Z0-9-]+)$ /leer-noticia.php?id= [L]

Awak tahu apa masalahnya?

P粉969253139P粉969253139380 hari yang lalu467

membalas semua(1)saya akan balas

  • P粉281089485

    P粉2810894852023-09-09 09:29:40

    Bagi yang mencari bantuan kerana mengalami masalah yang sama dan saya pasti ada ramai:

    Saya dapat memperbaikinya dengan cara yang bertuah, tetapi sudah tentu bukan cara profesional, mungkin cara yang salah, tetapi ia berkesan. Terdapat banyak soalan serupa di laman web ini tanpa jawapan, jadi nampaknya rata-rata orang tidak tahu banyak tentang htaccess.

    Penyelesaian yang saya temui ialah:

    RewriteEngine on
    RewriteRule ^en/([a-zA-Z0-9-/]+)$ /en/read-article?slug=  [L]
    RewriteRule ^en/([a-zA-Z0-9-/]+)$ /en/leer-noticia?slug=  [L]

    Jadi anda boleh mempunyai tapak web dalam pelbagai bahasa dan setiap bahasa berada dalam subfolder tetapi walaupun anda menjalankan satu laman web bahasa dan menggunakan subfolder maka anda pasti memerlukan bantuan ini hanya menjalankan .htaccess ini, ia akan berfungsi (edit dengan nama fail anda jelas)

    Sekarang kita pastinya perlu membaca lebih lanjut tentang [L] dalam kod, terdapat banyak lagi seperti itu:

    Saya tidak faham arahan berikut, jika anda memerlukannya, tetapi anda pasti boleh menemuinya jika anda meminta bantuan, atau mungkin sesetengah orang di sini boleh berkongsi pengetahuan dengan kami:

    DirectoryIndex home.php  
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    [L]
    Options +FollowSymLinks -MultiViews
    [QSA]

    Tiada orang lain yang menjawab soalan ini, ia sama seperti kebanyakan soalan tentang .htaccess dan URL mesra, tetapi terdapat sekurang-kurangnya beberapa perkara yang tidak profesional di sini, tetapi bagaimanapun saya berkongsi sedikit pengetahuan noob kerana itu idea utama dalam komuniti ini, bukan semua orang profesional, tetapi kita semua boleh berkongsi ilmu. Jika ada jawapan yang lebih baik, saya pasti akan menandainya sebagai betul

    balas
    0
  • Batalbalas