mod_rewrite разные URI в одном месте - PullRequest
0 голосов
/ 22 октября 2010

Я борюсь с, вероятно, довольно простыми mod_rewrite taks.

Это структура каталогов, которую я имею:

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

я хочу указать различным динамически создаваемым URL-адресам эти конкретные местоположения без изменения 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/

-> будет читать содержимое из / root / translations / 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.

Есть какие-нибудь подсказки?

1 Ответ

0 голосов
/ 22 октября 2010

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

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

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

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

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

...