.htaccess Bilinmeyen alt klasörler için yeniden yazma kuralları

Dec 18 2020

şu problemle karşı karşıyayım:

Sunucudaki klasör yapım: public_html / projects /

Ağaç görünümü: klasör yapısı ağaç görünümü

Gelen public_html klasörünün bir var .htaccess dosyası.

Projeler klasörünün içinde ortaklarım, içinde bir açılış sayfası olan numerus klasörleri oluşturacak (sadece bir index.php dosyası diyelim)

Uygulamaya çalıştığım yeniden yazma kuralları bir dil ve para birimi url parametreleridir.


Yani, örneğin bu url: https://www.example.com/projects/whatever-project-name/index.php?lang=en¤cy=eur

şu dile çevrilmelidir: https://www.example.com/projects/whatever-project-name/en/eur/

Ayrıca, para birimi değişkeni isteğe bağlıdır. (Dil değişkeni zorunlu bir değişkendir)

Yani url'ler de şuna benzer bir şey olabilir: https://www.example.com/projects/whatever-project-name/en/


Bu sorunu çözmek için birkaç gündür arayıp deniyorum (ve ağlıyorum). Benimkine yakın olan tek çözüm şudur: Bilinmeyen dizin için RewriteRule

ama çalışmasını sağlayamadım.

Şimdiye kadar sahip olduğum şey (ancak düzgün çalışmıyor):

RewriteEngine On
RewriteRule ^(.*/)?/([a-zA-Z0-9]{2,3})/([a-zA-Z0-9-]+)/?$ projects/$1index.php?lang=$2&currency=$3
RewriteRule ^(.*/)?/([a-zA-Z0-9]{2,3})/?$ projects/$1index.php?lang=$2[L]

Yanıtlar

2 RavinderSingh13 Dec 18 2020 at 01:13

Gösterilen örneklerinize dayanarak, lütfen aşağıdakileri deneyebilir misiniz? Lütfen URL'lerinizi test etmeden önce tarayıcınızın önbelleğini temizlediğinizden emin olun.

RewriteEngine ON
##With currency variable in URI.
RewriteCond %{REQUEST_URI} ^/projects/([\w-]+)/en/([\w-]+)/?$ [NC] RewriteRule ^(.*)$ projects/%1/index.php?lang=en&currency=%2 [L]

##Without currency variable in URI.
RewriteCond %{REQUEST_URI} ^/projects/([\w-]+)/en/?$ [NC] RewriteRule ^(.*)$ projects/%1/index.php?lang=en [L]