Untuk beberapa alasan, saya mendapatkan nama direktori duplikat di beberapa url dalam subfolder di situs web kami. Ini tampaknya hanya memengaruhi perayap karena file dalam direktori ini berfungsi dengan baik saat dinavigasi.

Saya hanya ingin menghapus nama direktori duplikat dan membuat mydomain.com/sub/sub redirect ke mydomain.com/sub.

Saya sudah mencoba banyak versi tetapi keterampilan .htaccess saya tampaknya kurang. Saat ini saya punya (tentu saja tidak berfungsi):

RewriteRule ^mydomain.com/sub/sub/(.*) mydomain.com/sub/$1  [L,R=301]
2
natronp 9 Juli 2020, 16:47

1 menjawab

Jawaban Terbaik
RewriteRule ^mydomain.com/sub/sub/(.*) mydomain.com/sub/$1  [L,R=301]

RewriteRule pola cocok dengan jalur URL saja - Anda tampaknya telah menyertakan (bagian dari) nama domain. Juga, mydomain.com di string substitusi akan dilihat sebagai subdirektori relatif.

Dengan asumsi Anda memiliki jumlah subdirektori terbatas di mana hal ini terjadi maka untuk mengurangi /sub/sub/<something> menjadi hanya /sub/<something> Anda akan melakukan sesuatu seperti ini:

RewriteEngine On
RewriteRule ^sub/sub/(.*) /sub/$1  [R=301,L]

Jika Anda memiliki arahan lain di file .htaccess Anda, maka ini harus mendekati bagian atas.

Tes pertama dengan pengalihan 302 (sementara) untuk menghindari potensi masalah caching. Bersihkan cache browser Anda sebelum pengujian.

Tetapi untuk menggemakan komentar @arkascha... alasan mengapa perayap menemukan URL ini di tempat pertama tampaknya adalah kesalahan dalam struktur URL/tautan internal Anda - jadi inilah yang pada akhirnya perlu diperbaiki.

1
MrWhite 9 Juli 2020, 15:10