2015-09-11 3 views
1

Вздох ... Я пытался строить некоторые правила перезаписи на основе следующих вопросов переполнению стека: Question 1 Question 2Язык Перепишите .htaccess

Моя .htaccess в настоящее время выглядит следующим образом:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} !^/(en|fr|es|de)/ 
RewriteRule ^(.*)$ /en/$1 [R,L] 

RewriteRule ^(en|fr|es|de)/(.*)$ $2?locale=$1 [L] 

и Я пробовал всевозможные варианты (включая точные ответы, заданные в вопросах).

Поскольку это стоит мой URL перенаправляет на:

/en/?locale=en 

Когда я смотрю в корень с тем, что выглядит как бесконечный цикл перенаправления в Firefox («Страница не перенаправляет правильно»).

Как вы, наверное, догадались, что я хочу, чтобы он переписал/en/на корневой каталог, и чтобы он выглядел так, как в браузере. Но я хочу, чтобы настоящий url был /? Locale = en. В корне есть index.php. Может быть, мне нужно другое правило, чтобы принять это во внимание?

Я не знаю, я действительно устал и раздражен, и .htaccess всегда был моим падением. Любое понимание было оценено.

ответ

2

Вы должны убедиться, что нет языковой строки запроса в первом правиле:

RewriteCond %{QUERY_STRING} !locale= 
RewriteCond %{REQUEST_URI} !^/(en|fr|es|de)/ 
RewriteRule ^(.*)$ /en/$1 [R,L] 

Или вы можете попробовать:

RewriteCond %{THE_REQUEST} \ /+(?!(en|fr|es|de)/).* 
RewriteRule ^(.*)$ /en/$1 [R,L] 
Смежные вопросы