Перенаправление .htaccess заменяет часть URL и заменяет на + - PullRequest
0 голосов
/ 29 апреля 2020

Я работал два дня с регулярным выражением, но я не смог получить мое правило в порядке.

Я хочу все эти URL
https://example.com/tag/word1-word2-word3/
для перенаправления 301 в .htaccess на
https://example.com/?s=word1+word2+word3

  • Может быть 1 или неограниченное количество слов
  • Все - стать +
  • Нет завершающего сл sh

На данный момент у меня есть

<IfModule mod_rewrite.c>  
RewriteEngine On
RewriteBase /
RewriteRule ^tag/(.*) /?s=$1 [R=301,L]  
RewriteRule ^(\?s=[\w+\+]*\w*)- $1%2B [R=301,L]  
RewriteRule ^(\?s=[\w+\+]*\w*)\/$ $1 [R=301,L]  
</IfModule>

Но это означает несколько перенаправлений где Я бы хотел сделать это единым целым.

Желая получить вашу помощь и понять, как работает правильное правило.

Вот окончательный рабочий результат.

  • Только один 301, так как первые правила сделаны внутренними с [N]
  • Я начинаю с замены - на +
  • Затем я меняю начало URL и 301 на конечный пункт назначения
  • Конец \/?$ препятствует тому, чтобы конечный элемент sh присутствовал в новом URL, хотя это может быть бесполезно там
RewriteRule       ^(tag/[^/]*?)-([^/]*)\/?$       $1+$2 [N]
RewriteRule       ^tag/([^/]*)\/?$ ?s=$1 [R=301]

Спасибо @ Cbroe

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