Мне нужно перенаправить веб-запросы вида /{language}-{country}/{file}
на:
/{language}-{country}/{file}
, если он существует, в противном случае /{language}/{file}
, если он существует, в противном случае /en-US/{file}
Существующий .htaccess
соответствует требованиям 1 и 3. Какие изменения необходимы для выполнения требования 2?
.htaccess
:
Options +FollowSymLinks
RewriteEngine On
RewriteCond $0 !i18n/en-US [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(i18n)/([^/]+)/(.*)$ $1/en-US/$3 [NC,L]
Обновление:
Мой новый .htaccess отвечает функциональным требованиям, но кажется слишком сложным.Как мне это упростить?
# If not exists {language}-{country}, try {language}
RewriteCond $0 i18n
RewriteCond $0 !en-us
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $0 ^(.*)(i18n)/(\w+)(-\w+)*/(.*)$
RewriteCond E:/webserver/app/$2/$3/$5 -f
RewriteRule ^(.*)(i18n)/(\w+)(-\w+)*/(.*)$ /app/$2/$3/$5 [L]
# If not exists {language}-{country} or {language}, try /en-us/
RewriteCond $0 i18n
RewriteCond $0 !en-us
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $0 ^(.*)(i18n)/(\w+)(-\w+)*/(.*)$
RewriteCond E:/webserver/app/$2/$3/$5 !-f
RewriteCond E:/webserver/app/$2/en-us/$5 -f
RewriteRule ^(.*)(i18n)/(\w+)(-\w+)*/(.*)$ /app/$2/en-us/$5 [L]