Перезаписать, чтобы исключить каталог и его подкаталоги - PullRequest
0 голосов
/ 10 ноября 2010

Я пытался заставить работать язык в стиле википедии.Так что URL будет en.example.com для английского, fr.example.com для французского и т. Д. ... Это работает нормально, однако я бы хотел, чтобы в области администратора всегда использовался базовый язык по умолчанию, т. Е. Не устанавливать переменную среды LANGUAGE.Я пытался добавить RewriteCond %{REQUEST_URI} !^admin [NC], но это, похоже, не дает никакого эффекта.

Мой код mod_rewrite выглядит следующим образом:

# Handle languages 
# Picks up the language code from the browser accept-language parameter
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2}).*$ [NC]
RewriteCond %{HTTP_HOST} !^[a-z]{2}\.[a-z]{2,}\. [NC]
RewriteRule ^(.*)$ http://%1.%{HTTP_HOST}/$1 [R=301] 

RewriteCond %{REQUEST_URI} !^admin [NC]
RewriteCond %{HTTP_HOST} ^([a-z]{2})\.[a-z]{2,}\. [NC]
RewriteRule ^(.*)$ - [ENV=LANGUAGE:%1,QSA]

# Redirecting all requests to one script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\+a-zA-Z0-9,%\(\)\_\ -/]+)$ /index.php [NC,L,QSA]

Спасибо за любую помощь, я уверен, что это что-то действительноглупо, что не так, как обычно.

1 Ответ

2 голосов
/ 10 ноября 2010

Ваша проблема в том, что REQUEST_URI не начинается с admin, у него будет косая черта ... он может начинаться с / admin, если у вас нет базы для перезаписи ... так что вы можете изменить его на! admin или просто! admin или! admin /, если весь ваш код находится на foo.com/admin/*

REQUEST_URI будет полным GET, как "/foo/bar.html"

...