htaccess переписать правила переписывания для нескольких доменов - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть несколько URL-адресов, и я хочу перенаправить старые URL-адреса на их новые.

Приведенный ниже код работает, например, htaccess перехватывает www.domain-a.com/index.php?id=41 и перенаправляет его с кодом состояния 301 на тот же домен с путем www.domain-a.com/our-conditions:

#301 redirect for domain A on a special id.
    RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
    RewriteCond %{REQUEST_URI} ^\/index\.php$
    RewriteCond %{QUERY_STRING} ^id=41(.*)$
    RewriteRule .* https://%{HTTP_HOST}/our-conditions? [R=301,L]

#410 on for domain A on a special id.
    RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
    RewriteCond %{REQUEST_URI} ^\/index\.php$
    RewriteCond %{QUERY_STRING} ^id=52(.*)$
    RewriteRule .* - [R=410,L]

#301 redirect for domain B on a special id.
    RewriteCond %{HTTP_HOST} ^www\.domain-b\.com$
    RewriteCond %{REQUEST_URI} ^\/index\.php$
    RewriteCond %{QUERY_STRING} ^id=221(.*)$
    RewriteRule .* https://%{HTTP_HOST}/press? [R=301,L]

Как вы можете видеть выше, это много кода для нескольких правил. Теперь я подумал, что это можно сделать лучше, и попробовал что-то другое.

Моя идея состояла в том, чтобы иметь несколько RewriteRules для одного домена. Обычно это прекрасно работает, как в следующем примере:

RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
RewriteRule ^press/material/(/?)$ https://%{HTTP_HOST}/press [R=301,L]
RewriteRule ^about/(/?)$ https://www.domain-b.de/impress [R=301,L]

Теперь я пришел к этому испытанию:

#Multiple rules for domain A on a special id.
    RewriteCond %{HTTP_HOST} ^www\.domain-a\.com$
    RewriteCond %{REQUEST_URI} ^\/index\.php$
    RewriteRule ^index.php?id=41(/?)$ https://%{HTTP_HOST}/our-conditions? [R=301,L]
    RewriteRule ^index.php?id=52(/?)$  - [R=410,L]

#Multiple rules for domain B on a special id.
    RewriteCond %{HTTP_HOST} ^www\.domain-b\.com$
    RewriteCond %{REQUEST_URI} ^\/index\.php$
    RewriteRule ^index.php?id=221(/?)$ https://%{HTTP_HOST}/press? [R=301,L]

Проблема в том, что мои условия не применяются. Например, index.php?id=41 только что прошел через htaccess, и мое приложение говорит 404 (не найдено).

Можете ли вы помочь мне, чтобы мой подход работал?

...