URL'lerimin her zaman www ile başlamasını nasıl zorlayabilirim?


17

Kullanıcıların www.mydomain.comtakma adla gelseler bile gelmelerini sağlamak istiyorum mydomain.com. Bu, alt alanlardaki çerezler üzerinde kontrole sahip olmam ve böylece Google'ın URL'lerden oluşan bir podge değil, tek bir alan adı görmesi için.

Bunu apache ile nasıl yapabilirim?


5
Bunun yerine bunu tersine çevirmenizi ve bunun yerine etkialanim.com'u zorunlu kılmayı önerebilir miyim? 'Www' öneki gereksizdir ve tamamen gereksizdir.
Eevee

Çerezler alanım.com'daki tüm alt alan adlarına gönderilirken, kendim için www.mydomain.com ile hangi çerezlerin yüklendiğine karar verebilirim. Örneğin, static.mydomain.com adresine çerez eklemekten kaçınabilirim, böylece çerezler aren Yüklenen her görüntü için aktarılmaz. Kesinlikle gereksiz değil.
Magnar

Google'a özellikle tek bir bağlantı stili kullanmasını söyleyebilirsiniz. Cevabımı aşağıda görebilirsiniz.
Robinicks

Temsilcim yok, ancak bu etiketleri eklemek yardımcı olacaktır: redirect redirectmatch mod_alias
Tom

1
Bu daha sonra olsa da , yine de alakalı. www, kullanım dışı değildir , çünkü alt alan adı olmayan bir alanın birkaç dezavantajı vardır. Www kullanmanın çeşitli nedenleri için yes-www.org/why-use-www adresine bakın .
user50849

Yanıtlar:


17
<VirtualHost ip:80>
   ServerName domain.com
   RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>

<VirtualHost ip:80>
   ServerName www.domain.com

   ... usual config
</VirtualHost>

7
Biraz daha basit bir çözüm için şunları yapabilirsiniz: "Kalıcı / ptth: //www.etkialanı.com/" yönlendirme ve apache soneki otomatik olarak korur. (Otomatik bağlantıyı devre dışı bırakmak için http'yi tersine çevirdim.)
Greg Hewgill

1
Gerçekten mi ? Tatlım, bunu hiç bilmiyordum. Her zaman URI'nin arka kısımlarını korumak için RedirectMatch'i kullanmak zorunda olduğunuzu düşündüm
Dave Cheney

4

Bunu httpd.confdosyanıza ekleyin :

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

4

Mod_rewrite desteğini etkinleştirin, ardından aşağıdaki içeriğe sahip alan adınız için kök klasöründe bir .htaccess dosyası oluşturun:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^domain\.com$
   RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>

RewriteCond testini büyük / küçük harfe duyarsız yapmayı unutmayın ...
Alnitak

Bunu yalnızca bir nedenle apache yapılandırma dosyasında değişiklik yapma erişiminiz yoksa yapın. .htaccessdosyalar çok fazla ek yüke sahiptir ve içindeki yeniden yazma işlemleri çok daha kötü hale getirir.
John Dalton

Yönlendirme kullanmak her zaman bu görev için mod_rewrite kullanılması tercih edilir.
David Pashley

3

Google'ın belirli bir alan stili ( www ile veya www olmadan ) kullanmasını istiyorsanız , ücretsiz bir Google Web Yöneticisi Araçları hesabı oluşturun, alan adınızın sahipliğini doğrulayın (bir dosya yükleyin) ve çevrimiçi kontrol panelini kullanarak tercih ettiğiniz alan adını ayarlayın .

Bu kadar basit ve herhangi bir sunucu tarafı kodunu değiştirmeniz gerekmez, ayrıca www ile veya www olmadan gelen bağlantılar , sayfalarınızın PageRank değerini artırarak aynı şekilde ele alınacaktır.

Bağlantılar, URL'nin hem www hem de www olmayan sürümlerini kullanarak sitenizi işaret edebilir (örneğin, http://www.example.com ve http://example.com ). Tercih edilen alan adı, arama sonuçlarında siteniz için kullanılmasını istediğiniz sürümdür .

Bize tercih ettiğiniz alan adını söyledikten sonra, URL'leri görüntülerken tercihinizi dikkate alacağız. Bu değişikliğin dizinimize tam olarak yansıdığını görmek biraz zaman alabilir.

Eğer varsa yok tercih edilen bir alan belirtin biz ayrı sayfalar için farklı referanslar olarak etki alanının www ve www olmayan sürümlerini ele alabilir.


1

Sadece domain.com'dan doğrudan hizmet etmek istediğimde, www.domain.com adresine giden insanlar bunun tam tersini yaşadım:

<VirtualHost *:80>
   ServerName domain.com

   ... usual config
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias sub.domain.com # can also catch some other subdomains
   ServerAlias *.domain.com # or all previously unmatched domains

   Redirect permanent / http://domain.com/
</VirtualHost>

Greg Hewgill'in de belirttiği gibi, Redirect'i kullanmak RedirectMatch'ten biraz daha basittir ve aynı işi yapar, daha fazla ayrıntı için bkz. Http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirect .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.