2010-10-22 4 views
0

Я боюсь, возможно, довольно простых mod_rewrite taks.mod_rewrite разные URI в одном месте

Это структура каталогов У меня есть:

  • корень \
    • переводы \
      • ан \ (содержит различные вложенные папки с файлами, 2 уровня вложенности)
      • fr \ (содержит различные вложенные папки с файлами, 2 уровня глубины)

, что я хочу сделать, это указать различные динамически создаваемые URLS в этих конкретных местах без изменения URL в адресной строке.

Например:

mydomain.com/one/ 
mydomain.com/two/ 
mydomain.com/three/ 

-> все читали бы содержание от /root/translations/en/index.php

mydomain.com/one/sub1/sub2/ 
mydomain.com/two/sub1/sub2/ 
mydomain.com/three/sub1/sub2/ 

-> прочтет содержание от /корень/переводы/en/sub1/sub2/index.php

mydomain.com/onefr/ 
mydomain.com/twofr/ 
mydomain.com/threefr/ 

-> все читали бы содержание от /root/translations/fr/index.php

mydomain.com/onefr/sub1/sub2/ 
mydomain.com/twofr/sub1/sub2/ 
mydomain.com/threefr/sub1/sub2/ 

-> прочтет содержание от /root/translations/fr/sub1/sub2/index.php

Я пытался что-то вроде:

RewriteCond %{REQUEST_URI} !\.css$ [NC] 
RewriteRule ^/(one|two|three)/$ /_translations/en/ [L] 

RewriteCond %{REQUEST_URI} !\.css$ [NC] 
RewriteRule ^/(onefr|twofr|threefr)/$ /_translations/fr/ [L] 

и в то время как он работает для перенаправления по умолчанию (например, mydomain.com/one/) в тот момент, когда я хочу глубже бросить его 404.

Любые подсказки?

ответ

0

Попробуйте эти правила:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^/(one|two|three)/(.*) /_translations/en/$2 [L] 

RewriteRule ^/(one|two|three)fr/(.*) /_translations/fr/$2 [L] 

Первое правило остановит любой запрос, который может быть отображен на существующий файл, чтобы переписать любым следующим правилом. Остальные два правила предназначены для двух описанных вами случаев.

+0

Это именно то, что мне нужно! Спасибо! – criography

Смежные вопросы