Я работал два дня с регулярным выражением, но я не смог получить мое правило в порядке.
Я хочу все эти 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