.htaccesses menulis ulang berdasarkan nilai cookie

Saya memiliki situs web dalam 2 bahasa. Saya memasukkan teks untuk setiap bahasa melalui konstanta php dan saya mendefinisikan bahasa pengguna melalui cookie (lang=es atau lang=en).
Sekarang url dasar di setiap bahasa adalah www.webname.com/ tetapi saya ingin menulis ulang tergantung pada bahasanya. Jika cookie disetel ke es, urlnya harus www.webname.com/es/ dan jika di en harus www.webname.com/en/.
Saya mencari di beberapa manual dan tutorial tetapi saya sangat buruk dengan ekspresi reguler.

EDIT: Saya sedang mengerjakan sesuatu seperti itu di file .htaccess saya:

RewriteEngine On
RewriteCond %{HTTP_COOKIE} lang=en;? [NC]

Jika saya memasang pengalihan seperti:
RewriteRule ^ http://www.google.com [NC,L]
setelahnya, itu berfungsi tetapi saya tidak tahu bagaimana melakukan hal yang sama dengan penulisan ulang.


person Hartorell    schedule 17.06.2015    source sumber


Jawaban (1)


Coba ini :

 RewriteEngine On 
 #Redirecting with the cookie value
 RewriteCond %{HTTP_COOKIE} ^lang=(en|es)$ [NC] 
 RewriteRule ^(.*)$ http://example.com/%1/$1 [R,L] 

Jika cookie disetel ke "en" ini akan mengalihkan setiap permintaan ke example.com/en/

person Amit Verma    schedule 17.06.2015
comment
Saya sedang mengerjakan kode Anda. Saya memahaminya dan saya berasumsi bahwa itu harus berhasil tetapi ternyata tidak. Sederhananya itu tidak menulis ulang apa pun di URL. Saya telah menghapus kode jenis lain di file htaccess untuk berjaga-jaga tetapi masih tidak berfungsi. - person Hartorell; 17.06.2015
comment
Oke. Saya menghapus ^ dari ^lang=(en|es)$ dan berfungsi sekarang. Terima kasih. - person Hartorell; 17.06.2015
comment
Hati-hati dengan tanda [NC] yang menyebabkan RewriteRule dicocokkan dengan tidak membedakan huruf besar-kecil. Artinya, tidak peduli apakah huruf muncul sebagai huruf besar atau kecil di URI yang cocok. - person A-312; 05.02.2019