Dize sorgusu olan URL'yi dize sorgusu olmadan aynı URL'ye nasıl yönlendirebilirim?

Oct 13 2019

Aşağıdaki gibi URL'ler ( biri www olan ve olmayan 2 web sitesi var)

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

yönlendirilmeli

https://example1.com/any-path-here/
https://www.example2.com/hello-how-are-you-today/

Yalnızca _gl = sabit görünüyor.

Denedim:

<IfModule mod_rewrite.c>
RewriteEngine On  
RewriteCond %{QUERY_STRING} _gl=    
RewriteRule ^ %{REQUEST_URI}? [L,R]
</IfModule>

Ve

<IfModule mod_rewrite.c>
RewriteEngine On  
RewriteCond %{QUERY_STRING} ^_gl=*    
RewriteRule ^ %{REQUEST_URI}? [L,R]
</IfModule>

Ve diğer kurallar. Ama hiçbir şey işe yaramıyor gibi görünüyor.

Umarım çözüm, açık alan adı yönlendirmesini ve https yönlendirmesini bozmaz.

Yanıtlar

DocRoot Oct 14 2019 at 01:23

Gönderdiğiniz kuralların hiçbiri kesinlikle doğru olmasa da, her ikisi de gerekli yönlendirmeyi gerçekleştirmelidir. .htaccessDosyanızda başka direktifler varsa, o zaman en olası nedeni bunların yanlış sırada olması ve bir çatışmanız olmasıdır.

Bu yeniden yönlendirmelerin, mevcut mod_rewrite yönergelerinden önce.htaccess dosyanın üst kısmına yakın olması gerekir . (Yine de HTTPS / açık alan yönlendirmelerinizle birleştirmek isteyebilirsiniz?)

Buna gerek yok <IfModule>sarıcı ve ihtiyacınız yok RewriteEngine Onbu zaten mevcutsa, yönerge .htaccessdosyası.

Bir istek başlayan bir sorgu dizesi içerdiğinde sorgu dizesi kaldırmak için _gl=daha sonra CondPattern okumalısınız ^_gl=. Sonda *, öncekini tekrarlar =ve _gl=bu dizeyi yalnızca başlangıçta değil, sorgu dizesinin herhangi bir yerinde eşleştirir.

Örneğin:

RewriteCond %{QUERY_STRING} ^_gl=    
RewriteRule ^ %{REQUEST_URI}? [R,L]

Apache QSD2.4'teyseniz ?, ikame dizesine bir eklemek yerine bayrak (Query String Discard) bayrağını kullanabilirsiniz . yani.RewriteRule ^ %{REQUEST_URI} [QSD,R,L]