Переадресация .htaccess с параметрами GET и условием URL - PullRequest
1 голос
/ 04 мая 2019

Я пытаюсь перенаправить на другой домен и изменить структуру URL (не сохраняя часть URI) на основе 2 условий:

  1. Исходный URL имеет параметр "lang".

  2. Исходный URI начинается с "страницы".

Это Apache 2.2

Это работает, когда в оригинальном URL есть только параметр lang:

RewriteCond %{QUERY_STRING} lang=en$
RewriteRule ^.*$ https://www.destination.com/en/? [R=301,L]

Например, он перенаправляет нормально для:

http://www.origin.com/?lang=en

до:

http://www.destination.com/en/

Но мне также нужно перенаправить что-то вроде:

http://www.origin.com/page/5/?lang=en

до:

http://www.destination.com/en/

Я пытаюсь сделать что-то подобное, но это не работает, я думаю, что что-то не так в шаблоне RewriteRule:

RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^/page/.*/?$ https://www.destination.com/en/? [R=301,L]

1 Ответ

0 голосов
/ 06 мая 2019

Добро пожаловать!

Возможно, вы не захотите иметь ? в конце вашего RewriteRule.Однако, если вы хотите, вы можете сделать это.Возможно, вы хотите, чтобы RewriteRule был похож на:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{QUERY_STRING} lang=en$
    RewriteRule (.*)(\?lang=en) https://www.destination.com/en/ [R=301,L]

</IfModule>
  • Возможно, вы захотите перезапустить ваш Apache, выполнив команду, подобную:

    sudo apachectl restart
    
  • Вы можете очищать кэш браузера каждый раз, когда вносите изменения в .htaccess файл

enter image description here

График

Этот график показывает, как работает ваше выражение, если вы хотите знать:

enter image description here

Этот инструмент может помочь вам просто разработать любое правило, которое вы хотели бы иметь.

Я предположил, что вы хотите перенаправить все ваши ?lang=en содержащие ULR на один URL.Я не был уверен в этом.Если это не так, вы не можете использовать мое выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...