вопрос о перенаправлении htaccess

Если в URL-адресе моего сайта нет параметра языка, я бы хотел принудительно перенаправить на английскую версию сайта. Мои URL-адреса такие:

http://localhost:8888/имя_сайта/продукты http://localhost:8888/site_name/products/a-nice-product

и т.д

Если нет «en», «fr» или «nl» после идентификатора /site_name/, например, htaccess, чтобы перенаправить его на любой текущий URL-адрес, НО с добавлением «en» после /site_name/.

Как это сделать с файлом .htaccess?

Текущие правила .htaccess:

RewriteEngine On
RewriteBase /site_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /site_name/index.php?$1 [L]

person stef    schedule 31.12.2009    source источник


Ответы (1)


Попробуйте этот код mod_rewrite:

RewriteEngine on
RewriteCond $2 !^(en|fr|nl)/
RewriteRule ^([^/]+)/(.*) $1/en/$2 [L,R=301]

Изменить    Теперь, когда вы уже находитесь в /site_name/, попробуйте это правило:

RewriteCond $1 !^(en|fr|nl)$
RewriteRule ^([^/]+)/.* /site_name/en/$0 [L,R=301]
person Gumbo    schedule 31.12.2009
comment
не работает, я думаю конфликт с текущими правилами htaccess. В зависимости от того, куда я вставляю ваши правила, я получаю либо ничего, либо внутреннюю ошибку сервера. - person stef; 31.12.2009
comment
@stef: О, так ты уже в /site_name/. Ты должен был это сказать. - person Gumbo; 31.12.2009
comment
на самом деле, это также переписывает пути к моим изображениям. Как я могу заставить его игнорировать ваши правила, если что-то выходит из site_name/images/ ? - person stef; 31.12.2009
comment
@stef: добавьте еще одно условие: RewriteCond $1 !^images$ - person Gumbo; 31.12.2009