Back to Question Center
0

Semalt: Belli bir dosya adı yapısına uymayan bir dizindeki tüm dosyaları nasıl yeniden yönlendirebilirim?

1 answers:

Önceki geliştiricinin birkaç web sayfasını güncellediği bir web sitem var. Sorun, geliştiricinin her yeni web sayfasını yeni dosya adlarıyla yaptığı ve eski dosya adlarını sildiği şeklindedir. Birlikte çalıştım. htaccess birkaç aydır yeniden yönlendirecek ve kullanım hakkında biraz bilgi sahibi olacağım, ancak bu görevi bıraktım.

Eski sayfalar şöyle isimlendirildi:

  www. domain. tld / alt dizin / dosya. html 

Yeni sayfalara şu ad verilir:

  www. domain. tld / alt dizin / dosya-new-ad. html 

Yeni dosyaların ilk kelimesi eski dosyanın tam adıdır ve tüm yeni dosyalar son 2 kelimeyi aynıdır.

  www. domain. tld / alt dizin / Dosya1-yeni-isim. html
www. domain. tld / alt dizin / Dosya2-yeni-isim. html
www. domain. tld / alt dizin / dosya3-yeni-isim. html
vb.  

Ayrıca url'ye erişebilmeliyiz:

  www. domain. tld / alt dizin / 

Yeni dosyalar google tarafından endekslendi (eski URL'ler 404'lere neden oluyor ve google'ın güler yüzlü olabilmesi için yeni dosyaya yönlendirilmesi gerekiyor) ve istemci yeni dosya adlarını daha açıklayıcı oldukları gibi korumak istiyor. Başarıyı göstermeksizin pek çok farklı şekilde yönlendirme girişiminde bulundum, ancak bana en çok stump yapanı göstereceğim

  RewriteBase /
RewriteCond% {THE_REQUEST}! ^ Subdir /. *\-yeni isim\. html
RewriteCond% {THE_REQUEST}! ^ Subdir / $
RewriteRule ^ subdir / (. *) \. html $ http: // www. domain. tld / alt dizin / $ 1 \ -yeni \ -adı \. html [R = 301, NC] 

Ziyaret ederken www. domain. Tld / alt dizin / dosya1. html tarayıcıda, bu (33) bir url ile bir 403 Yasak hata neden olur:

  www. domain. tld / alt dizin / Dosya1-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-isim-yeni-adı- yeni-name-yeni-isim. html 

Muhtemelen gözden kaçırdığım basit bir şey olduğuna eminim, lütfen biri bana uygun bir yönlendirme yapmama yardım edebilir mi? Çok teşekkürler!

DÜZENLEME

Ayrılmış bir belgeye kaydedilmiş tüm eski dosya adlarını da aldım, çünkü bunları aşağıdaki örnekte olduğu gibi ayarlamalıyım:

  (dosya (1 | 2 | 3 | 4 | 5) | sayfa (1 | 2 | 3 | 4 | 5) | a (l | lüve | ter) | ccept) 
6 days ago

Karatları RewriteCond satırlarınızdan çıkarmalısınız:

  RewriteBase /
RewriteCond% {THE_REQUEST}! Subdir /. *\-yeni isim\. html
RewriteRule ^ subdir / (. *) \. html $ http: // www. domain. tld / alt dizin / $ 1 \ -yeni \ -adı \. html [R = 301, NC] 

Sonra yeniden yazma koşulları etkili olur ve sonsuz yönlendirme döngüsünden kaçınırsınız. Eski yazım koşullarınız hiçbir zaman etkili olmaz, çünkü bu gereklidir.

Orijinal RewriteCond% {THE_REQUEST}! ^ Alt dizin /. *\-yeni isim\. html kuralı diyor "İstek dize ile başlamazsa" subdir ". Ancak % {THE_REQUEST} değişkeni, "GET / alt dizin / dosya" ya benzeyen tam HTTP isteğini içerir. html HTTP / 1. 1". hiçbir zaman "alt dizin" ile başlamaz, çünkü her zaman "GET" ile başlar.

Bir alternatif,% {REQUEST_URI} öğesini alt dizin adı için eğik çizgi ile birlikte kullanmak olacaktır:

  RewriteEngine Açık
RewriteBase /
RewriteCond% {REQUEST_URI}! ^ / Subdir /. *\-yeni isim\. html
RewriteCond% {REQUEST_URI}! ^ / Subdir / $
RewriteRule ^ subdir / (. *) \. html $ http: // todoodlist. com / alt dizin / $ 1 \ -yeni \ -adı \. html [NC, R = 301] 
Semalt: Belli bir dosya adı yapısına uymayan bir dizindeki tüm dosyaları nasıl yeniden yönlendirebilirim?
Reply