Robots.txt ve sitemap.xml dosyaları bir .htaccess yönlendirmesi yoluyla dinamik olabilir mi?


13

Çok dilli ve çok alanlı bir sitem var. Benzersiz bir CMS yüklemesi (Drupal) ile çalışır, bu yüzden tek bir kök dizini var. Statik bir robots.txt dosyam varsa, orada bildiğim kadarıyla tek bir etki alanı için dosyaları gösterebilirim.

.Htaccess içine bir satır koyabilir miyim

Redirect 301 /robots.txt /robots.php

(veya eşdeğer talimat ve lütfen izin veriliyorsa hangisini belirtin)

böylece dinamik bir php dosyasına yönlendirir, burada göre farklı içeren sunabilir $_SERVER['HTTP_HOST']?

Ve sitemap.xml için aynı soru , bu yüzden her farklı etki alanı için farklı bağlantıları gösteren dinamik bir sitemap.php sunabilirim .

.Txt ve .xml kullanmama sorunu, belirtildiği gibi, tüm etki alanlarının sunucu bilgisayarda tek bir fiziksel dizini paylaşmasıdır.


Yanıtlar:


12

Herhangi bir dosyayı dinamik yapabilirsiniz. Bunu yapmanın en iyi yolu yeniden yönlendirmeler değil, yeniden yazma kurallarıdır.

RewriteRule ^robots\.txt$  /robots.php [L]

Bu şekilde, dinamik bir komut dosyasıyla çalıştırırsınız, ancak URL değişmez. Tarayıcıların çoğu (Googlebot dahil) robots.txt için yönlendirmeleri izler , ancak yönlendirmeleri getirirseniz bazı tarayıcılar kafanız karışır.

PHP ile çalıştırsanız bile, robots.txt dosyanızın her etki alanı için her tarayıcı için statik görünmesi gerektiğini unutmayın . Farklı alanlar için ve hatta farklı kullanıcı aracıları için farklı içerik sunmak iyi olur. Ancak, rastgele veya farklı saatlerde farklı içerik sunmak gerçekten arama motoru tarayıcılarını karıştırabilir ve SEO'nuzu kirletebilir.


Site haritaları istediğiniz gibi adlandırılabilir. Bunları yeniden yönlendirebilir veya aynı URL'de dinamik olarak güçlendirmek için bir yeniden yazma kuralı kullanabilirsiniz. Bunları şöyle de adlandırabilirsiniz:

  • Site-a-sitemap.xml
  • Site-b-sitemap.xml
  • Site-c-siteharitasi.xml

Ardından robots.txt dosyasında onlara başvurun :

Sitemap: http://www.example.com/example-sitemap.xml

veya web yöneticisi araçları veya arama konsolu aracılığıyla bunları manuel olarak arama motorlarına gönderin.


Yanıtınız için her ikisine de teşekkürler. Lütfen ne yazım hatası olabileceğini düzeltin, işe yarayan w3d talimatıdır, bu nedenle kod RewriteRule ^robots\.txt$ robots.php [L]\ simgesi olmadan olmalıdır .
Cesar

Evet, eğik çizgi içeren sürüm apache.conf dosyanız için uygun olacaktır. .Htaccess için, kapalı bırakmanız gerekir. Cevabı .htaccess için uygun sürümü içerecek şekilde düzenledim.
Stephen Ostermiller

Üzerinde çizgi öneki @Cesar desen (yani. ^/robots\.txt$Bu yönerge sunucu geneli olsaydı) gerekli olacağını ama evet, başı dizinin .htaccess dosyalarında uymaz. Bu durumda sübstitüe (örn. /robots.php) Üzerindeki eğik çizgi öneki isteğe bağlıdır.
MrWhite

5

Evet, aynı şekilde herhangi bir istek "dinamik" olabilir.

Ancak, yönlendirmezsiniz (örnek kodunuzda olduğu gibi), mod_rewrite kullanarak dahili olarak yeniden yazmalısınız. (Drupal'ın muhtemelen zaten yaptığı şeyle aynı.)

Örneğin, kök .htaccess dosyanızda:

RewriteEngine On
RewriteRule ^robots\.txt$ robots.php [L]

RewriteEngine yalnızca bir kez gerçekleşmelidir (birden çok kez gerçekleşmesi gerçekten önemli değildir).

Bunun sadece .htaccess dosyanızdaki diğer yönergelerle çakışmadığından emin olmanız gerekir. Bu nedenle, muhtemelen ön denetleyicinizden önce, dosyanın başlangıcına yakın olmalıdır .


4

Site haritası dosyasını dinamik hale getirmek iyidir - site haritalarınızı otomatik olarak güncellemenin iyi bir yoludur.

Robots.txt dosyasını dinamik yapmak (aynı ana bilgisayar için! Ayrı ana bilgisayarlar için bunu yapmak aslında her biri için normal bir robots.txt dosyasıdır.) Büyük olasılıkla sorunlara neden olur: siteden her URL tarandığında taranmaz , "yanlış" sürüm önbelleğe alınmış olabilir. Örneğin, robots.txt dosya bloğunuzu çalışma saatleri içinde taramayı yaparsanız, o zaman önbelleğe alınıp bir gün boyunca takip edilmesi mümkündür - yani hiçbir şey taranmaz (veya alternatif olarak taramaya izin verildiğinde önbelleğe alınır). Google, örneğin çoğu site için robots.txt dosyasını günde yaklaşık bir kez tarar.


Burada statik veya dinamik arasında hiçbir fark görmüyorum. Ayrıca dinamik bölümü farklı ana bilgisayarlara göre farklı sürümler sunmak için kullanırım, ancak ana bilgisayarlar bilgisayar sunucusunda aynı fiziksel dizini paylaştığından, bu robots1.txt, robots2.txt, robots3.txt (sayılar) hangi alanda olduğumuzu gösterir).
Cesar

Bu dinamiğin, her seferinde farklı içerik sunmak istedikleri anlamına geldiğini sanmıyorum. PHP koduyla ana bilgisayar adına dayalı kararlar verebilmeleri için PHP ile güçlendirmek istiyorlar. Farklı kullanıcı aracılarına farklı kurallar sunmak için genellikle robots.txt dosyasını dinamik hale getiririm.
Stephen Ostermiller

2
Evet, belirttiğim gibi, birden çok ana bilgisayar için bunu yapmak, ana bilgisayar başına ayrı robots.txt dosyalarına sahip olmak gibidir, ki bu iyidir. Bununla birlikte, bazen dinamik bir robots.txt dosyası kullanarak günün saatine kadar taramayı kontrol etmeye çalışan sitelerin çok fazla soruna neden olduğunu görüyoruz.
John Mueller

İyi bir nokta. Kabul ettiğim yanıtı robots.txt dosyasını çok dinamik yapmama uyarısıyla düzenledim.
Stephen Ostermiller

0

Sitemap.php oluşturmanıza gerek yoktur, çünkü: 1. Her dil için ayrı bir sitemap.xml dosyası çalıştırabilir ve her birini arama motoru konsollarında belirleyebilirsiniz. 2. Standart site haritası dosyaları en son içeriği içerecek şekilde düzenli olarak yeniden yazılabilir ve bu dosyaları dinamik bir şekilde yapar; bu nedenle .php gerekli değildir. Aynı dosyayı standart .xml uzantısıyla yeniden oluşturmak dahili güncelleme mekanizmasına ve cron'a bağlıdır.

Sitemap.xml dosyaları statiktir ve yalnızca güncellemeler onları dinamik hale getirir - gerçek zamanlı olarak güncellenmez. Onları her dakika yeniden yazmalarını sağlamak mümkündür, ancak buna gerek yoktur, çünkü: 1. Google, son gönderimden itibaren 1 saatten daha kısa bir sürede kontrol etmez 2. Site haritası dosyaları büyük olduğunda, yeniden yazın sık sık sunucu performansını kaput yapacak.

Büyük miktarda veri olduğunda ve site haritası dosyasını 50mb'den büyük hale getirdiğinde, birden çok site haritasına sahip bir sistem gerekir. Bu site haritası2,3 ... .xml dosyasının ana dosya listesine ekleneceği anlamına gelir, ancak bu dosyalardaki içerik de bu dosyalar yeniden oluşturuluncaya kadar sabit kalır (örneğin cron tarafından).

Ayrıca, bir arama motoru dosyaya eriştiğinde, dosyaya çok hızlı bir şekilde geri dönmeyeceğini (manuel olarak yapılmadığı sürece) belirtmek isteriz. Her durumda, sitemap.php'nin gerçek zamanlı bir güncellemesinin oluşturulmasına gerek olmadığını doğrular, çünkü normal bir sitemap.xml tek başına dinamik olabilir, gün veya hafta boyunca yeni içerikle güncellenebilir.

Bir sitemap.php kullanan hiçbir profesyonel düşünemiyorum. Bu dosyaları kullanmanın daha iyi / uygun yolları olduğu için iyi olmaz.


Dinamikin tercih edilmesinin birkaç nedeni olabilir: Site haritaları dinamik olarak oluşturulurken hiçbiri çok fazla yer kaplamaz. Site haritalarının güncel tutulması gerekir ve dinamik site haritaları bunu yapmanın kolay bir yolu olabilir.
Stephen Ostermiller
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.