Bir tarayıcı için de bir arama motoru için de /about ile /about/ iki ayrı adrestir. İkisi de 200 dönüyorsa her sayfanın iki kopyası var demektir. Çaresi, bir biçimi seçip ötekini ona yönlendirmektir - ve bu işin ters gitme biçimi bir döngüdür.

Birini seçin

# nginx: no trailing slash
rewrite ^/(.*)/$ /$1 permanent;

# nginx: with a trailing slash
rewrite ^([^.]*[^/])$ $1/ permanent;

İkinci örüntü, içinde nokta bulunan her şeyi bilerek dışarıda bırakır; böylece dosyalar - /logo.png, /robots.txt - /logo.png/ adresine gönderilmez.

Döngü

Birbiriyle çelişen iki kural - biri eğik çizgiyi ekleyen, öteki onu kaldıran - bitmeyen bir yönlendirme üretir. Bu genelde web sunucusunda bir kural, uygulama çerçevesinde ise onun tersi olduğunda olur. Onu TEK bir yerde düzeltin; ve bir görüşü varsa o yer uygulama olmalıdır.
curl -sSIL https://example.com/about | grep -E '^HTTP|^location' | head -10

O çıktıda birden fazla yönlendirme ya da aynı iki adresin dönüşümlü görünmesi, döngünün kendisidir. Bakınız yönlendirme döngüleri.

Dizinler istisnadır

Gerçek bir dizinin sondaki eğik çizgiye ihtiyacı vardır: o olmadan sayfa içindeki göreli bağlantılar bir düzey yukarıda çözülür, böylece HTML yüklenirken CSS ve görseller bozulur. Web sunucularının onu eklemek için yönlendirmesi boşuna değildir.

Hangisinin asıl olduğunu söyleyin

<link rel="canonical" href="https://example.com/about">
Hangisini seçerseniz seçin, site haritasını, canonical etiketini ve iç bağlantıları onunla uyumlu kılın. Kendi içinde, sonradan yönlendirip terk ettiği biçime bağlantı veren bir site, her tıklamada bir gidiş dönüş öder.