it-swarm.asia

Permalink yapısının değiştirilmesi - htaccess'deki yönlendirmeler arşiv bağlantılarını keser

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?

2
TFM

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 RewriteCondNAME _ 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, RewriteCondname__), 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. RewriteRuletemel olarak RedirectMatchyönergesinin aynısını yapıyor.

2
hakre