Правило .htaccess не выполняется на сервере, если используется дополнительная косая черта - PullRequest
0 голосов
/ 10 октября 2019

У меня есть следующий набор правил .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

Что происходит? ТИА

...