Bloguma başladığımda, kalıcı bağlantılar ve aşağıdaki yapı:
http://<domain>/%year%/%monthnum%/%day%/%postname%/
Bir süre önce, kalıcı bağlantı yapısını yalnızca "http://<domain>/%postname%/
" olarak değiştirdim.
Eski permalink yapısına dış bağlantılar ile uğraşmak için htaccess dosyama şu satırı ekledim:
RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://<domain>/$4
Şimdi sorun, yönlendirme çizgisinin arşiv bağlantılarını kesmesidir, örn. 2 Eylül 2010 tarihli gönderileri göstermek yerine "http://<domain>/2010/09/02
" ön sayfaya yönlendirilir.
Htaccess yönlendirme direktifini düzeltmek mümkün mü, yoksa pastayı yiyip de yiyemeyeceğim mi?
Mod_Alias RedirectMatch Mod_Rewrite kadar güçlü değil. Ana Bilgisayarınızda Mod_Rewrite varsa (örneğin, Güzel Permalink'ler bunu kullanır) yönlendirme işlemini yalnızca URL, Arşiv bağlantı biçiminde değilse yapabilirsiniz.
Bu durumu test etmek için RewriteCond
NAME _ ve yönlendirme komutu yapmak için RewriteRule ... [R=301]
yönergesi vardır.
Verilerinize dayanan bir örnek:
RewriteCond %{REQUEST_URI} !^/((20|19)[0-9]{2})/([0-9]{2})/[0-9]{2}$ [NC]
RewriteRule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ http://<domain>/$4 [R=301,L]
Bu test edilmemiş, ancak işi yapması gerektiğini düşünüyorum. Beklediğiniz sayıyı daha iyi belirlemek için niceleyiciyi ({2}) kullandım. Bunun yanında RewriteCond'da sadece 20 .. ve 19 .. yıllara uyan bir model yarattım.
İlk satır (koşul, RewriteCond
name__), bir Arşiv URL'siyle eşleşmemeyi kontrol eder ve yalnızca eşleşmediğinde, yeniden yönlendirme yapmak için kural uygulanır. RewriteRule
temel olarak RedirectMatch
yönergesinin aynısını yapıyor.