2015-12-03 3 views
1

То, что я хочу добиться:.htaccess коды RewriteRule стран как ГЭТ парам

http://example.com/en ->http://example.com/?lang=en

http://example.com/en/something ->http://example.com/something/?lang=en

http://example.com/ru ->http://example.com/?lang=ru

http://example.com/ru/something - >http://example.com/something/?lang=ru

Стараюсь с:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^en/(.+)$ /?p=$1&lang=en [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^ru/(.+)$ /?p=$1&lang=ru [L,QSA] 

ответ

1

Вы можете сделать это следующим образом:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(ru|en)/(.+)$ /$2/?lang=$1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(ru|en)/?$ /?lang=$1 [L,QSA] 

(ru|en) будет соответствовать либо ru или en. Если вы хотите сделать это общим двухбуквенным совпадением, вы можете использовать [a-z]{2}

+0

Эта работа, но как добиться без перенаправления? Я хочу еще иметь http: // example.com/en', но также получить параметры lang. – Wizard

+0

ОК, см. Редактирование. Вам нужно дополнительное правило – arco444