. Htaccess 301 tek sayfa yönlendirme

5 Cevap php

Bir site yeniden sonra, yönlendirilir gereken sayfaların bir çift var. Her şey sadece bir kaç şey yeniden ve / veya yeniden adlveırılmış, aynı etki alanında kalıyor. Bunlar olarak:

/ Contact.php

şimdi:

/ Contact-us.php

. Htaccess dosyasını kullanarak, en çok tavsiye bulduğum biri olduğu, bu satırı ekledim:

RedirectMatch 301 / Contact.php / Contact-us.php

Bu çoğunlukla ince - bu iş yapar - Sorun da yönlendirmeleri olduğunu:

  • /team1/ Contact.php
  • /non-existant-folder/ Contact.php

Ben sadece kök contact.php yönlendirmek istediğinizi belirterek bir yolu var mı?

5 Cevap

RedirectMatch uses a regular expression that is matched against the URL path. And your regular expression /contact.php sadece gelir any URL path that contains /contact.php but not just any URL path that is exactly /contact.php . So use the anchors for the start and end of the string (^ ve $),

RedirectMatch 301 ^/contact\.php$ /contact-us.php

Bu yapmalı

RedirectPermanent /contact.php /contact-us.php

Eğer bir sorun, RedirectMatch olan, daha temel, Redirect direktifi bir alternatif simplest possible solution kullanmayı tercih ederseniz.

Bu desen eşleştirme kullanmak ve böylece daha açık ve diğerleri anlamak için kolay değildir.

yani

<IfModule mod_alias.c>

#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php

</IfModule>

Docs söylüyorlar çünkü sorgu dizeleri üzerinde yapılmalıdır:

Additional path information beyond the matched URL-path will be appended to the target URL.

redirect 301 /contact.php /contact-us.php

Orada RedirectMatch kuralı kullanarak hiçbir nokta ve sonra da tam bir uyum vardır böylece bağlantıları yazmak zorunda. Eğer dahil yoksa dışlamak zorunda değilsiniz! Sadece maçtan olmadan yönlendirmek kullanın ve daha sonra normal bağlantıları kullanabilirsiniz

Eğer maç şablon ve URL'ler yönlendirmek için yetenek istiyorsa da bir RewriteRule kullanabilirsiniz.