Цель состоит в том, чтобы добавить языковой стандарт «en» в начало URL-адресов, в которых его нет.
пример
https://example.com/document/file.php
Становится
https://example.com/en/document/file.php
Следующее правило отлично работает само по себе:
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/
RewriteRule ^(.*) /en/$1 [R=302,L]
Дело в том, что я застрял в переписывании URL после правил Symfony.
Определите RewriteBase автоматически и установите его как переменную среды.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
Устанавливает заголовок HTTP_AUTHORIZATION, удаленный Apache
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Удалите app.php из URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app_pre_prod\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
Добавьте запрашиваемую страницу в индекс (пример index.php / login)
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^ %{ENV:BASE}/app.php [L]
Лучший результат, который у меня есть: ничего не меняется.
Или отключив третье правило и сняв флажок [L]
последнего, следующий результат:
https://example.com/en/app.php/document/file.php