Bagaimana cara mengarahkan URL dengan kueri string ke URL yang sama tanpa kueri string?
URL seperti di bawah ini (ada 2 situs web, satu dengan www dan lainnya tanpa itu)
https://example1.com/any-path-here/?_gl=1*um0ntk*_ga*YW1wLUVyYS1QbHgwcFp1SEJBYVlGSlNYdWNQUWIxNGVxY2VhakRDNDUtYmJUZWZPV1M2WEdWN2s2dXVRNzNZWGNTdkk
https://www.example2.com/hello-how-are-you-today/?_gl=1*1lcwex2*_ga*YW1wLXBtWXdrdWNEcTRjTVcwWjMzTzJwNEdJeU5vTmo5UVF0RmFhTEdpbkdMdjgyLXRNQXJaM21oRGpUX2ppSnB3dGs
harus dialihkan ke
https://example1.com/any-path-here/
https://www.example2.com/hello-how-are-you-today/
Hanya _gl = yang tampaknya konstan.
Saya telah mencoba:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} _gl=
RewriteRule ^ %{REQUEST_URI}? [L,R]
</IfModule>
Dan
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^_gl=*
RewriteRule ^ %{REQUEST_URI}? [L,R]
</IfModule>
Dan aturan lainnya. Tapi sepertinya tidak ada yang berhasil.
Saya harap solusinya tidak akan mengacaukan pengalihan domain polos dan pengalihan https.
Jawaban
Meskipun tidak ada aturan yang Anda posting benar, keduanya harus melakukan pengalihan yang diperlukan. Jika Anda memiliki arahan lain dalam .htaccess
file Anda , kemungkinan besar penyebabnya adalah urutannya salah dan Anda mengalami konflik.
Pengalihan ini harus berada di dekat bagian atas .htaccess
file, sebelum perintah mod_rewrite apa pun yang ada . (Meskipun Anda mungkin ingin menggabungkannya dengan pengalihan HTTPS / domain polos?)
Anda tidak memerlukan <IfModule>
pembungkusnya dan Anda tidak memerlukan RewriteEngine On
perintah tersebut, jika ini sudah ada di .htaccess
file Anda .
Untuk menghapus string kueri saat permintaan berisi string kueri yang dimulai _gl=
maka CondPattern harus membaca ^_gl=
. Sebuah trailing *
mengulangi yang sebelumnya =
dan _gl=
cocok dengan string itu di manapun dalam string kueri, tidak hanya di awal.
Sebagai contoh:
RewriteCond %{QUERY_STRING} ^_gl=
RewriteRule ^ %{REQUEST_URI}? [R,L]
Jika Anda menggunakan Apache 2.4, Anda dapat menggunakan QSD
flag (Query String Discard) daripada menambahkan a ?
ke string substitusi . yaitu.RewriteRule ^ %{REQUEST_URI} [QSD,R,L]