Eski kategoriden yeni kategoriye kadar ürünlerin Nginx basit yönlendirmesi


9

Eski kategoriden yeni kategoriye ürün yönlendirmeleri yapıyorum.

Aşağıdaki kural ile çalışmasını başardım:

rewrite ^/old-category/(.*) /new-category/$1;

Ama ne zaman "bitiş çizgisi" işareti $ kullanmalıyım ve benim durumumda ya da onsuz fark nedir bilmek istiyorum. Örneğin:

rewrite ^/old-category/(.*)$ /new-category/$1;

Ayrıca, yalnızca eski kategori adı (ürünler olmadan) yazarlarsa, yalnızca kategori yönlendirmesi için yeni bir kural oluşturmalı mıyım yoksa her iki durumda da çalışmak için yukarıdaki geçerli kuralı düzenleyebilirim.

Cevaplarınız için şimdiden teşekkür ederim.

Yanıtlar:


9

Sorularınızı sırayla cevaplıyoruz ...

Bu

rewrite ^/old-category/(.*) /new-category/$1;

ve bu

rewrite ^/old-category/(.*)$ /new-category/$1;

yazıldığı gibi eşdeğerdir. .*Kural çok, 0 veya daha fazla "her şeyi" eşleşir $gereksiz / gerçekten gerekli değildir.

$Eğer maç dizeleri istediğinizde sonlandırıcı yararlı olduğunu ucu içinde belirli bir şekilde , örneğin

rewrite ^/old-category/(.*)\.php$ /new-category/$1;

sadece PHP dosyalarını yeniden yazmak için .

İkinci sorunuza gelince, doğru anladıysam, bunu yeniden yönlendirmek istiyorsunuz

http://example.com/old-category/

buna

http://example.com/new-category/

Öyleyse, ZERO veya daha fazla karakterle eşleştiği için zaten rewritekural tarafından yapılır ..*


3
Güzel soru, güzel cevap. Pek çok kişi, gerçekte ne anlama geldiğini düşünmeden $ varsayılan olarak ayarlar (veya varsayılan olarak dışarıda bırakır). Her gördüğümde (. *) $ Ben küfrediyorum. Ben denemedim ama aslında bu durumda $ dışında bırakarak regex kontrol etmek zorunda başka bir kural olarak biraz daha iyi bir performans olabilir . Bu soruya cevap almak ilginç olurdu: D
Broco
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.