it-swarm.asia

Posta, Sayfa, Kategori ve Resim URL'leri için 301 Yönlendirme Yaratılıyor?

Korkarım bunun burada sormak için çok fazla olabileceğinden, öyleyse, lütfen öğrenmek için başka bir yer söylemekten çekinmeyin.

Yönlendirme ile Yardım

Kötü gelişmiş bir siteyi temizliyorum ve bir alt dizinden wordpress geçiriyorum. Kafamı yönlendirme ve regex lojistiği etrafına sarmaya çalışmakla saatler harcadım. Sanırım bu konuyu ele alıyorum, ancak bu hakkı yaptığımın doğrulanması ve en iyi uygulamalarla ilgili herhangi bir tavsiyede bulunmaktan memnuniyet duyacağım. Herhangi biri nasıl yapılır örnekleriyle ilgili iyi bir rehber olduğunu bilirse, bunu da takdir ediyorum.

Bunun için really simple eklentilerini bilen varsa, çok minnettar olurum. Redirections eklentisine baktım ama çok kafa karıştırıcı buluyorum (baş ağrısı!). Her durumda, aşağıdaki fikirlerim (kaynakları izleyen => sonra hedef), Yönlendirme talimatlarından, ekran görüntülerinden ve bulduğum diğer derslerden topladığım şeyler. Bunları doğrudan .htaccess dosyasına koymama veya Yönlendirmeler veya başka bir eklenti kullanmamdan bağımsız olarak uygulanabilir olduklarından eminim.

İşte, yapmaya çalıştığım şey ve nasıl yapılması gerektiğini düşündüğüm:

  1. Wordpress'i alt dizinden köke taşımak için:

    /wp /(.*) => /$1Г.____.]
  2. Kökteki alt dizinlerde bulunan tüm sayfalar için, bir grup sayfayı silmek ve/veya bir üst düzey sayfada birleştirmek istiyorum:

    /ürünler dizini /(.*) =>/ürünler üst düzey sayfası 
     
    /about-directory /(.*) =>/about-top- seviye sayfası 
     
    /services-directory /(.*) =>/services-üst düzey sayfa 
    
  3. Belirli bir desenle eşleşen üst düzey sayfalardan oluşan bir grup için, onları belirli kategorilere yönlendirmek istiyorum; dosya adlarının tümü bunun gibi aynı iki kelimeyle başlar: aynı Word-variation-variation.html ve onların varolan dosya adlarını korumalarını istiyorum - eğer permalinks'imi `.html` ile bitecek şekilde ayarlarsam, bu işe yarar , İnanıyorum:

    /same-Word (. *) => /newcategory/$1Г.____.]

    `.Html` ile biten kalıcı bağlantılarım yoksa kuralı nasıl oluşturabilirim? (Sanırım gördüm! "Karakter değil", ama burada nasıl kullanılacağından emin değilim - öyle değil mi):

    /same-Word (. *) => /newcategory/$1!\.htmlГ.____.]
  4. Ve sonra, yukarıda belirtilen şekilde tanımlanıp yönlendirilen belirli sayfalara sahip olduğumda, geri kalanı (çöpü) siliyorum ve kullanıcıları ana sayfaya (veya rastgele bir gönderiye mi?) Göndermek istiyorum.

    Yani, burada 2 soru:

    1. "Yukarıdaki gibi yönlendirilmiş dosyalar dışında her şey için bunu yap" yazan kuralı nasıl oluşturabilirim

    2. Bu kuralın, bundan sonra oluşturduğum yeni sayfalara ve yayınlara uygulanmasını nasıl durdurabilirim?

    Bir fikir, silinerek, bulunamayan bir 404 sayfasını elde edeceğim, bu yüzden 404 sayfasının kendisinin kuralını oluşturmalı mıyım? Yapmak istediğim bu mu?

    Söylediğim gibi, site kötü bir şekilde geliştirildi (müşteri ile uygun mimarlık, SEO, vb. Gözetmeksizin, sadece "bir sayfa atma" talimatını veren müşteriyle) - neredeyse hiçbir sıralama veya dış bağlantıya sahip değil Endişelenmek için, ama bir SEO ve doğru gelişme açısından en iyi yaklaşımı anlamak istiyorum.

  5. Ayrıca, mevcut görüntüleri vb. Wp-içerik dizinine taşımalı mıyım veya bunları kendi alt dizinlerinde/dizinlerinde bırakmalı mıyım? Eğilimim gerçekten 'temiz-süpürmeye' gitmektir - düzensiz görünen her şeyden kurtulun, ama bunun değecek kadar iş olup olmayacağından emin değilim…

Her türlü rehberlik için şimdiden teşekkür ederiz.

5
CJN

Merhaba @CJN: ,

İlk sorunuz olan WordPress dizinini taşımak diğerlerinden farklı olarak ele alınır.

WordPress'i Alt Dizinden Köke Taşımak:

/wp-config.php içine gidin ve tanımlamak için aşağıdakileri ekleyin (elbette example.com yerine müşterinizin etki alanını kullanarak):

define('WP_SITEURL', 'http://example.com');
define('WP_HOME',    WP_SITEURL);

301 template_loader ve wp_safe_redirect() kullanılarak yönlendirmeler

Geri kalan sorularınızın çoğunu .htaccess olarak @ Kau-Boy göstererek değiştirerek çözebilirsiniz, veya bunu sadece PHP içinde yapabilirsiniz. WordPress, bunun için bir template_redirect HTTP durum kodu ile yeniden yönlendirmek için wp_safe_redirect() işleviyle birlikte kullanabileceğiniz bir 301 kancasına sahiptir. Gördüğünüz gibi geri kalanlar sadece PHP kodu ve bir tutam düzenli ifade sihri için çok kaba. Bu kodu pratik olarak temanızın functions.php dosyasında herhangi bir yerine koyabilirsiniz:

add_action('template_redirect','my_template_redirect');
function my_template_redirect() {
  $redirect_to = false;
  list($url_path,$params) = explode('?',$_SERVER['REQUEST_URI']);
  $path_parts = explode('/',trim($url_path,'/'));
  switch ($path_parts[0]) {
    case 'products-directory':
      $redirect_to = '/products-top-level-page';
      break;
    case 'about-directory':
      $redirect_to = '/about-top-level-page';
      break;
    case 'services-directory':
      $redirect_to = '/services-top-level-page';
      break;
    default:
      if (preg_match('#same-Word(.*)#',$path_parts[0],$match)) {
        $category = str_replace('.html','',$match[1]);
        $redirect_to = "/newcategory/{$category}";
      } else {
        // Do whatever else you need here
      }
  }
  if ($redirect_to) {
    wp_safe_redirect($redirect_to,301);
    exit();
  }
}

Kullanılabilirlik ve Sadece SEO Değil?

Gerçekten # 2 yapmak ister misin diye sorardım. Bir siteyi kullanıcılar için yalnızca algılanan SEO için optimize edilmiş olandan (ve kurucu ve bir zamanların ortak organizatörü olarak - bu grubun ben bir SEO neofiti değilim.) Çok daha az kullanışlı hale getiren IMO daha ziyade URL yolunun ilk bölümünden "-directory" kodunu bıraktığınızı görmek yerine. Yine de JMTCW.

404 Sayfa Oluşturuluyor mu?

Bir 404 yayınlamanız gerekiyorsa, bunu başlık ile yapabilirsiniz:

header("HTTP/1.0 404 Not Found");
exit;

Ancak bence yapmak istediğin bu değil, değil mi? Yukarıdaki PHP işlevini değiştirerek ve bir 301 seçeneğiyle HTTP isteğine yanıt vererek ihtiyacınız olan yönlendirme mantığını başarabileceğinizi düşünüyorum.

Görüntüleri Medya Kitaplığına Alma ve 301 Yönlendirme

Onları medya kütüphanesine taşıyabilir ve ileriye götürmeyi yönetmenize izin verir. İşte size yardımcı olabilecek bir eklenti (3.0 ile çalışıp çalışmadığından emin olmasam da; yine de çalışmak iyi bir kod temeli olabilir):

Hardcoding Image URL 301 Dizi kullanarak yönlendirir

Sonra tek seferlik bir şey olacağı için basitçe resim URL'lerinizi bir diziye kodla yazdırabilir ve yeniden yönlendirme işlevinizde eşleştirmek için kullanabilirsiniz. Switch ifadesindeki varsayılanı yukarıdaki koddan değiştirmek şöyle olabilir:

default:
  if (preg_match('#same-Word(.*)#',$path_parts[0],$match)) {
    $category = str_replace('.html','',$match[1]);
    $redirect_to = "/newcategory/{$category}";
  } else {
    $images = array(
      '/images/image1.jpg' => '/wp-content/uploads/2010/08/image1.jpg',
      '/images/image2.jpg' => '/wp-content/uploads/2010/08/image2.jpg',
      '/images/image3.jpg' => '/wp-content/uploads/2010/08/image3.jpg',
      );
    if (in_array($url_path,$images)) {
      $redirect_to = $images[$url_path];
    } else  {
      // Do whatever else you need here
    }
  }

preg_match() işlevini 301'e kadar kullanma Resimleri URL Modeline Göre Yeniden Yönlendirme

Tabii ki resim URL’leriniz bir örüntü izlerse, bunun yerine preg_match() işlevini kullanarak görüntü dizisinin çoğunu veya tümünü düzenleyebilirsiniz:

if (preg_match('#^/images/(.*)$#',$url_path,$match)) {
  $redirect_to = "/wp-content/uploads/2010/08/{$match[1]}";
}

Bu yardımcı olur umarım?

8
MikeSchinkel

Bir kalıcı kalıcı payandadan diğerine geçmek için bir eklenti var, ancak bunun ihtiyaçlarınız için yeterli olmayacağından eminim. Bazı .htaccess yeniden yazma kurallarını kullanmanız gerekecek. İhtiyacınız için size bazı örnekler vermeye çalışıyorum (hepsinin doğru olup olmadığından emin değilim). Tüm bu satırları sunucunuzun kökündeki ".htaccess" adlı bir dosyaya ekleyin. WordPress kurallarının üstünde:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
# your rules start here. Keep the following lines that has been produced by wordpress
RewriteBase /
RewriteRule wp/(.*)$ /$1 [R=301]
RewriteRule /products-directory/(.*)$ /products-top-level-page [R=301]
RewriteRule /about-directory/(.*)$ /about-top-level-page [R=301]
RewriteRule /services-directory/$ /services-top-level-page [R=301]
RewriteRule /same-Word(.*)$ /newcategory/$1 [R=301]

[R = 301] bayrağı, müşteri tarayıcısına veya arama motoruna kalıcı bir yönlendirme olduğunu söyleyecektir.

WordPress veritabanınızdaki tüm izinleri güncellemek isteyeceksiniz. Veritabanındaki dize güncelleme hakkında bir makale yazdım . Ne yazık ki, henüz yazıyı çevirmedim. Ancak sorguların açık olması gerekir, aksi takdirde MySQL belgelerini kullanın.

1
2ndkauboy

Bunu kullanıyorum: Basit 301 Yönlendirmeler eklenti - bunu önceki birkaç sayfa için kullandım ve yakında web tasarım sitemi tüm dosyaları ve klasörleriyle birlikte WP dosyalarımın içine taşıyacağım.

0
Steve Shearer