www ve non-www teknik olarak farklı hostlardır. Bir sürüm canonical olarak seçilmeli, diğer sürüm tek 301 ile HTTPS canonical hedefe taşınmalı; sertifika iki hostu da kapsamalı ve subdomainler geniş bir regex ile yanlışlıkla ana domaine yönlendirilmemelidir.
www.example.com -> example.com
301 Moved Permanently
SSL_ERROR_BAD_CERT_DOMAIN
Redirect loop
Canonical host mismatchwww ve non-www teknik olarak farklı hostlardır. Bir sürüm canonical olarak seçilmeli, diğer sürüm tek 301 ile HTTPS canonical hedefe taşınmalı; sertifika iki hostu da kapsamalı ve subdomainler geniş bir regex ile yanlışlıkla ana domaine yönlendirilmemelidir.
Apache, LiteSpeed, Plesk proxy veya NGINX-only yapıyı ayırmadan `.htaccess` sonucu beklemeyin.
Mevcut dosyayı tarihli yedekleyin; Apache/LiteSpeed hata kaydındaki directive ve satırı bulun.
Redirect, rewrite, header ve erişim kurallarını aynı anda topluca değiştirmeyin.
curl ile status, Location, Content-Type ve redirect sayısını ölçüp cache katmanlarını ayrıca kontrol edin.
Kullanıcıdan gelen herhangi bir Host header’ını redirect hedefi olarak kullanmayın.
Anlamı: www ve non-www kuralları birbirini geri yönlendiriyor.
Muhtemel neden: İki panel veya iki `.htaccess` kuralı.
Anlamı: Redirect gerçekleşmeden TLS doğrulaması başarısız.
Muhtemel neden: Sertifika SAN listesinde www yok.
Anlamı: Host koşulu aşırı geniş.
Muhtemel neden: Tüm `*.example.com` eşleşiyor.
Anlamı: Protokol ve host ayrı kurallarda.
Muhtemel neden: Önce HTTPS sonra non-www.
Anlamı: Home/Site URL farklı canonical hostta.
Muhtemel neden: Uygulama URL ayarı.
Anlamı: Panel ve `.htaccess` farklı hedef kullanıyor.
Muhtemel neden: İki yönetim noktası.
Anlamı: Edge ve origin farklı host hedefliyor.
Muhtemel neden: Çift redirect.
Anlamı: Host varyasyonları ayrı URL-prefix property olabilir.
Muhtemel neden: Normal mülkiyet ayrımı.
Bu ifadeyle eşleşen kayıt bulunamadı.
for u in http://example.com https://example.com http://www.example.com https://www.example.com; do curl -sS -o /dev/null -w "$u -> %{http_code} %{url_effective} redirects:%{num_redirects}\n" -L "$u"; doneTüm temel URL varyasyonlarını karşılaştırır.
curl -sIL --max-redirs 10 http://www.example.com/path?x=1 | grep -iE '^HTTP|^location:'Path ve query ile redirect zincirini gösterir.
echo | openssl s_client -connect example.com:443 -servername www.example.com 2>/dev/null | openssl x509 -noout -ext subjectAltNameSertifikanın www ve non-www hostlarını kapsayıp kapsamadığını gösterir.
grep -nE 'HTTP_HOST|SERVER_NAME|www\\.|example\\.com|R=301' .htaccessCanonical host kurallarını bulur.
dig +short example.com A; dig +short www.example.com A; dig +short www.example.com CNAMEwww ve kök domain DNS hedeflerini gösterir.
curl -sL https://example.com/path | grep -ioE '<link[^>]+rel=["'"']canonical["'"'][^>]*>' | head -n 1Hedef sayfanın canonical hostunu gösterir.
RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^ http://example.com%{REQUEST_URI} [R=301,L]RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]Tam host koşulu ve nihai HTTPS hedefi tek rule set içinde yönetilebilir.
DNS proxy ve edge redirect, origin kurallarıyla çakışabilir.
Uygulama ve panel domain ayarları seçilen hostla aynı olmalıdır.
Hayır. NGINX `.htaccess` dosyalarını okumaz. Kuralın `server` veya `location` yapılandırmasına çevrilmesi gerekir.
Genellikle hayır; Apache `.htaccess` dosyasını istek sırasında değerlendirir. Ancak sunucu VirtualHost, modül veya AllowOverride değişikliğinde reload/restart gerekir.
Mevcut dosyanın tarihli yedeği alınmalı, aktif document root doğrulanmalı ve değişiklik staging veya düşük trafikli zamanda test edilmelidir.
cPanel’de çoğunlukla `public_html`, Plesk’te `httpdocs` içindedir; addon domain ve subdomainlerin document root’u farklı olabilir.
LiteSpeed Apache uyumluluğu sayesinde kuralların büyük bölümünü destekler; bazı modül ve handler davranışları farklı olabilir.
Apache/LiteSpeed error log içindeki tam directive ve satır kaydıdır. Dosyayı rastgele silmek yerine loga göre geri alınmalıdır.
Alan adı, document root, proxy, WordPress ve sunucu yapısı doğrulanmadan doğrudan eklenmemelidir. Örnekler uyarlanıp test edilmelidir.
cPanel, Plesk, LiteSpeed, WordPress, özel PHP ve WISECP yapılarında yönlendirme, rewrite, CORS, erişim ve 500 hatalarını loglarla birlikte inceliyoruz.