Çevirmek için nasıl / tr / file.php dosya.php için? Lang = tr htaccess Apache'yi

3 Cevap php

Ben dilli bir web sitesi yazıyorum. Ben gibi sunucu üzerinde birden fazla dosya var:

/index.php
/files.php
/funny.php

Ve bu gibi URL içine dil kodunu koyarak dil desteği eklemek istiyorum:

http://mywebsite/en/index.php

: yönlendirmek istiyorum

http://mywebsite/index.php?lang=en

Ve

http://mywebsite/en/files.php

: yönlendirmek istiyorum

http://mywebsite/files.php?lang=en

Örneğin ben daha fazla dil koymak istiyorum:

http://mywebsite/ch-ZH/index.php

VeI would like this to work only for files with php and php5 extension. Rest of files should be the same as they are.

Yani, örneğin i adrese gidecek

http://mywebsite/ch-ZH/index.php

Ben şimdiki yolu olduğunu kabul etmek benim PHP istiyorum

http://mywebsite

ve DEĞİL

http://mywebsite/ch-ZH

Benim PHP kodu ben akım yolu üzerinde ilgili ve onlar şimdi çalışıyoruz gibi onları çalışmak istiyorum çünkü benim için gerekli.

Eğer bu kriterleri karşılamak için Apache htaccess dosyasının nasıl hazırlanacağını yazmak misiniz?

3 Cevap

Bu deneyin:

RewriteEngine on
RewriteRule ^([a-z]{2}(-[A-Z]{2})?)/(.*) $3?lang=$1 [L,QSA]

Ve current path sorunu için, göreli URI nasıl çözüleceğini bilmek zorunda: Göreli URI'larını URI bir taban URI by the client çözümlenir (not filesystem path!) Mevcut kaynağın Aksi belirtilmediği takdirde.

So if a document has the URI /en/foo/bar and the relative path ./baz in it, the client resolves this to /en/foo/baz (as obviously the client doesn’t know about the actual filesystem path).
For having ./baz resolved to /baz, you have to change the base URI which can be done with the HTML element BASE.

Eğer ModRewrite kullanmak istemiyorsanız, size (ln -s . en), web klasörüne sembolik link koymak ve PHP URL'yi kontrol edebilirsiniz.

Böyle bir şey hile yapmak gerekir,

RewriteEngine on
RewriteRule ^(.[^/]+)/(.*).php([5])?$ $2.php$3?lang=$1 [L]

Bu yalnızca. Php maç ve. Php5 dosyaları, böylece dosyaların geri kalanı etkilenmemiş olacak olacaktır.