Чего я хочу достичь?
Я хочу перенаправить на /de/
, если вызывается домашняя страница (/
) и заголовок HTTP Accept-Language
начинается с de
браузера посетителя, нотолько для определенных доменов.
Вот моя отправная точка:
Поскольку у меня много правил перенаправления, зависящих от домена, у меня есть несколько директив <If>
.Следующий фрагмент кода сведен к минимуму.
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirect serveral domain aliases
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?anotherdomain\.com$
RewriteRule .* https://www.mywebsite.com/en/products/overview/ [R=301,L]
RewriteCond %{HTTP_HOST} ^(karriere|jobs)\.areal\-domain.at$
RewriteRule .* https://www.mywebsite.com/de/ueber-uns/karriere/ [R=301,L]
# Redirect language DE for homepage only of www.mywebsite.com
# (the following rule is outside of the following otherwise it will not work actually
RewriteCond %{REQUEST_URI} ^/?$
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/ [R=301,QSA,L]
<If "req('Host') =~ /(live.mywebsite.com|www.mywebsite.com|mywebsite.com|mywebsite.docker)/">
RedirectMatch 301 ^/$ /en/
RedirectMatch 301 ^/contact(/)?$ /en/about-us/contact/
RedirectMatch 301 ^/customer-support(/)?$ /en/service-and-support/
</If>
</IfModule>
Это моя проблема:
Сервер apache v2.4.38 всегда отправляет код состояния HTTP 500, если я перезаписываю дляперенаправление языка в директиву <If>
, как показано в следующем фрагменте:
<IfModule mod_rewrite.c>
RewriteEngine on
# ...
<If "req('Host') =~ /(live.mywebsite.com|www.mywebsite.com|mywebsite.com|mywebsite.docker)/">
# Redirect language DE for homepage only of www.mywebsite.com
RewriteCond %{REQUEST_URI} ^/?$
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ /de/ [R=301,QSA,L]
RedirectMatch 301 ^/$ /en/
RedirectMatch 301 ^/contact(/)?$ /en/about-us/contact/
RedirectMatch 301 ^/customer-support(/)?$ /en/service-and-support/
</If>
</IfModule>
В чем причина такого поведения?
Я прочитал документацию, но не смог найтилюбая информация о моем сценарии.