2014-06-25 3 views
1

Допустим, у меня есть сайт под названием example.com, которая имеет следующие страницы:.htaccess mod_rewrite Код страны

example.com 
example.com/foo 
example.com/bar 

Теперь я хочу, чтобы создать австралийскую версию сайта. Содержание для большинства страниц будет одинаковым на обоих сайтах, но структура URL будет:

example.com/au 
example.com/au/foo 
example.com/au/bar 

Все запросы уже проходят через index.php следующим в моем файле .htaccess:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule^index.php [L] 

Как я могу изменить это так, что оба example.com/foo и example.com/au/foo оба маршрутизируются, хотя index.php. Что касается index.php, я хочу, чтобы он обрабатывал обе страницы одинаково.

Логика определения того, какой контент показывать, произойдет позже и выходит за рамки этого вопроса.

+0

Но ваше текущее правило уже отправляет все в '/ index.php', поэтому должно быть достаточно для URL-адресов'/au/'. – anubhava

ответ

1

Один маленький Tweak

Я предполагаю, что ни foo, ни bar фактические каталоги.

  • RewriteCond %{REQUEST_FILENAME} !-f проверяет, что запрос является не существующий файл
  • RewriteCond %{REQUEST_FILENAME} !-d проверяет, что запрос не существующий каталог

Оба example.com/foo и example.com/au/foo удовлетворяют этим условиям, и, следовательно, будет следовать правилу. Давайте сделаем один небольшой настройки, так что index.php не становится загрязнена фрагментами пути:

RewriteRule^index.php [L,DPI] 

с этим, вы должны быть установлены. :)

+0

FYI, отредактировал ответ, чтобы добавить небольшое изменение в правило. – zx81

+0

Эй, там, следуя этому, один из ответов разрешил его для вас, или вопрос еще есть? – zx81

+0

Да, это ответ на мой вопрос. Как вы сказали, все пути уже маршрутизируются, хотя index.php, поэтому любая дальнейшая логика, которую мне нужно сделать, может быть применена. –