Klasörler sorgu dizesi dönüştürmek için mod_rewrite kullanarak

3 Cevap php

Bu istekleri dönüştürmek için en kolay yolu nedir:

http://www.example.com/en/
http://www.example.com/en/index.php

Için:

http://www.example.com/index.php?language_id=en

Orada çeşitli PHP dosyaları, yani kural ayrıca harita gerekir

http://www.example.com/en/anyfile.php

Için:

http://www.example.com/anyfile.php?language_id=en

Dil kimliği (o geçerli etmesi için, PHP komut dosyası içinde kontrol ediyor) herhangi iki harfli kod olabilir.

Muhtemelen, ben. Htaccess kullanmak gerekir, ve yukarıda nasıl uygulanacağı konusunda herhangi bir tavsiye büyük mutluluk duyacağız. Teşekkürler.

Update

Aşağıdaki benim için çalıştı.

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ([a-z]+)/(css|js|images)/(.+) /$2/$3 [L]
  RewriteRule ([a-z]+)/(.+).php /$2.php?language_id=$1 [QSA,L]
  RewriteRule ([a-z]+)/$ /index.php?language_id=$1 [QSA,L]
</IfModule>

Css, js ve görüntülere Bu da yeniden yolları istekleri geri kök klasöre klasörleri. Hiçbir dosya otomatik olarak index.php yönlendirme, girilirse o da çalışır.

3 Cevap

Muhtemelen, örneğin, yeniden yazılması isteği sorgu dizesi herhangi addiitonal bit ekler, hangi sizin rewrite kurallarına QSA bayrağı eklemek istiyorum

RewriteRule magic here [PT,QSA]
RewriteRule /en/(.*) /$1?language_id=en

Bu denenmemiş ama teoride bu? Dil_Kimliği = tr becore bir değişken olarak en sonra hiçbir şey haritalandırmalıdır

Ayrıca yapabilirdi

RewriteRule /([a-zA-Z0-9+])/(.*) /$2?language_id=$1

Bu, aynı zamanda bir haritada olmalıdır

http://www.example.com/is/index.php

Karşı

http://www.example.com/index.php?language_id=is

Ben dostu URL için aşağıdaki yapı kullanıyorum:

RewriteRule ^([^/]+)[/]{0,1}(.*)$ index.php?q=$2&language=$1 [L,QSA,NC]