У меня есть следующий набор правил .htaccess
RewriteRule ^$ /?lang=en [L,QSA]
RewriteRule ^(en|fr)/?$ /?lang=$1 [L,QSA]
RewriteRule ^(en|fr)/(.*?)/?$ /?lang=$1&page=$2 [L,QSA]
RewriteRule ^(.*?)/?$ /?lang=en&page=$1 [L,QSA]
Последнее правило является новейшим для реализации и предназначено как запасной вариант, если не был предоставлен код языка для попытки обслуживания страницы с использованиемязык по умолчанию.
Первые 3 правила отлично работают в производственной и локальной среде, но при введении 4-го правила оно нарушается. Но он прерывается только тогда, когда завершающий слеш необязателен ... если завершающий слеш опускается полностью, он ломается, а если он необязательный, он ломается, но если он применяется принудительно, он работает. Однако, это, конечно, имеет побочный эффект: для выполнения правила требуется конечный слеш.
RewriteRule ^(.*?)/?$ /?lang=en&page=$1 [L,QSA] DOES NOT WORK (500 ERROR)
RewriteRule ^(.*?)$ /?lang=en&page=$1 [L,QSA] DOES NOT WORK (500 ERROR)
RewriteRule ^(.*?)/$ /?lang=en&page=$1 [L,QSA] WORKS BUT REQUIRES TRAILING SLASH
Что происходит? ТИА