CMS DataLife Engine - Система управления сайтами

Sign in to follow this  
INFORMLINE

Массовый 301 редирект для тегов в версии 13.2 со знака "+" на "пробел"

Recommended Posts

Не надо руками творить +100500 редиректов, вот Вам бонус в руки сделал 2 решения для тех и других:

Массовый 301 редирект для NGINX с символа "+" на "пробел":

rewrite ^/tags/(.*)\+(.*) /tags/$1%20$2 permanent;

Массовый 301 редирект для Apach с символа "+" на "пробел":

RewriteRule ^/tags/(.*)\+(.*) /tags/$1\ $2 [L,R=301]

P.S. Пользуйтесь на здоровье!))

Edited by INFORMLINE
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Где ты раньше был?

неделю назад твое решение было бы кстати.

Share this post


Link to post
Share on other sites
59 минут назад, INFORMLINE сказал:

Не надо руками творить +100500 редиректов, вот Вам бонус в руки сделал 2 решения для тех и других"
Массовый 301 редирект для NGINX с символа "+" на "пробел":
rewrite ^(.*)/(.*)\+(.*) $1/$2%20$3 permanent;
Массовый 301 редирект для Apach с символа "+" на "пробел":
RewriteRule ^(.*)/(.*)\+(.*) $1/$2\ $3 [L,R=301]

P.S. Пользуйтесь на здоровье!))

Как я понимаю, в данном случае переадресация будет проходить даже если + не в разделе tags. Например, если имя пользователя состоит из двух слов, то там тоже присутствует +.

 

Надо указать, чтобы переадресация была только в разделе tags

Share this post


Link to post
Share on other sites
39 минут назад, kamensk сказал:

Где ты раньше был?

неделю назад твое решение было бы кстати.

У меня страницы тегов закрыты от индекса изначально, вот и не парюсь, сегодня Выходной, день добрых дел))

37 минут назад, radrigo сказал:

Как я понимаю, в данном случае переадресация будет проходить даже если + не в разделе tags. Например, если имя пользователя состоит из двух слов, то там тоже присутствует +.

 

Надо указать, чтобы переадресация была только в разделе tags

Да, Вы правы, вот решение именно для тегов:

Массовый 301 редирект для NGINX с символа "+" на "пробел":

rewrite ^/tags/(.*)\+(.*) /tags/$1%20$2 permanent;

Массовый 301 редирект для Apach с символа "+" на "пробел":

RewriteRule ^/tags/(.*)\+(.*) /tags/$1\ $2 [L,R=301]

  • Like 2
  • Upvote 1

Share this post


Link to post
Share on other sites

Отлично! То, что надо. Но как сделать редирект тегов дополнительных полей?

 

Пользователи мне пока не нужны и я попытался использовать этот вариант rewrite ^(.*)/(.*)\+(.*) $1/$2%20$3 permanent;

но редиректит на 

Not Found
The requested URL /home/a/alucky/site.ru/public_html/xfsearch/education-study/Мобильная%20реклама/ was not found on this server.

А должен был быть редирект на site.ru/xfsearch/education-study/Мобильная%20реклама/

Share this post


Link to post
Share on other sites
17 часов назад, alexpsp сказал:

Отлично! То, что надо. Но как сделать редирект тегов дополнительных полей?

 

Пользователи мне пока не нужны и я попытался использовать этот вариант rewrite ^(.*)/(.*)\+(.*) $1/$2%20$3 permanent;

но редиректит на 


Not Found
The requested URL /home/a/alucky/site.ru/public_html/xfsearch/education-study/Мобильная%20реклама/ was not found on this server.

А должен был быть редирект на site.ru/xfsearch/education-study/Мобильная%20реклама/

Попробуйте так rewrite ^/xfsearch/education-study/(.*)\+(.*) /xfsearch/education-study/$1%20$2 permanent;

Либо для всех полей rewrite ^/xfsearch/(.*)/(.*)\+(.*) /xfsearch/$1/$2%20$3 permanent;

Share this post


Link to post
Share on other sites

не работает в таком варианте /tags/система+зажигания+лада+гранта/

Edited by NlCKRUS

Share this post


Link to post
Share on other sites
1 час назад, NlCKRUS сказал:

не работает в таком варианте /tags/система+зажигания+лада+гранта/

Для такого варианта нужно увеличить строку, т.е. rewrite ^/tags/(.*)\+(.*) /tags/$1%20$2 permanent;  у Вас 4 слова то нужно ^/tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1%20$2%20$3%20$4 сделать так

Edited by INFORMLINE
  • Thanks 1

Share this post


Link to post
Share on other sites
36 минут назад, INFORMLINE сказал:

Для такого варианта нужно увеличить строку, т.е. rewrite ^/tags/(.*)\+(.*) /tags/$1%20$2 permanent;  у Вас 4 слова то нужно ^/tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1%20$2%20$3%20$4 сделать так

добавил RewriteRule ^/tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1%20$2%20$3%20$4 [L,R=301]

ничего не изменилось

Share this post


Link to post
Share on other sites
1 час назад, NlCKRUS сказал:

добавил RewriteRule ^/tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1%20$2%20$3%20$4 [L,R=301]

ничего не изменилось

В правиле для апача не надо %20 вместо этого ставьте обычный пробел под экран слеша т.е. "\ "

RewriteRule ^/tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301]

Edited by INFORMLINE
  • Thanks 1

Share this post


Link to post
Share on other sites
4 минуты назад, INFORMLINE сказал:

В правиле для апача не надо %20 вместо этого ставьте обычный пробел под экран слеша т.е. "\ "

RewriteRule ^/tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301]

заменил, все равно плюсы вместо пробелов

Share this post


Link to post
Share on other sites
38 минут назад, NlCKRUS сказал:

заменил, все равно плюсы вместо пробелов

Сейчас проверю на тесте

38 минут назад, NlCKRUS сказал:

заменил, все равно плюсы вместо пробелов

Да, точно, вот так надо RewriteRule ^tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301]  - Без слеша перед tags

Хотя на другом сайте работало и со слешем без проблем.

Edited by INFORMLINE
  • Thanks 1

Share this post


Link to post
Share on other sites
5 часов назад, INFORMLINE сказал:

Либо для всех полей rewrite ^/xfsearch/(.*)/(.*)\+(.*) /xfsearch/$1/$2%20$3 permanent;

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@site.ru to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.10 (Unix) Server at site.ru Port 80

Мне нужно для всех полей

Edited by alexpsp

Share this post


Link to post
Share on other sites
1 час назад, alexpsp сказал:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@site.ru to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.10 (Unix) Server at site.ru Port 80

Мне нужно для всех полей

Вы куда это прописали? Этот код предназначен для nginx если вы пишите в  .htaccess то Вам нужно RewriteRule ^xfsearch/(.*)\+(.*) /xfsearch/$1\ $2 [L,R=301]  - для одного +, RewriteRule ^xfsearch/(.*)\+(.*)\+(.*) /xfsearch/$1\ $2\ $3 [L,R=301] - для двух + и тд

Edited by INFORMLINE
  • Thanks 1

Share this post


Link to post
Share on other sites
14 часов назад, INFORMLINE сказал:

Сейчас проверю на тесте

Да, точно, вот так надо RewriteRule ^tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301]  - Без слеша перед tags

Хотя на другом сайте работало и со слешем без проблем.

что то не выходит тоже

Share this post


Link to post
Share on other sites
1 час назад, NlCKRUS сказал:

что то не выходит тоже

Может быть вы делаете правки обычным блокнотом? Там кодировка файла нарушается. Используйте Notepad++

Share this post


Link to post
Share on other sites
2 часа назад, NlCKRUS сказал:

что то не выходит тоже

Скиньте Ваш файл который вы редактируете, сделаю у себя на тесте и перекину Вам.

Share this post


Link to post
Share on other sites
1 час назад, INFORMLINE сказал:

Пропишите RewriteRule ^tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301] сразу после -> RewriteEngine On

работает

 

не хочу быть навязчивым, но как сделать, чтобы и когда 2 плюса тоже работало?

написал так

RewriteRule ^tags/(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ [L,R=301]

RewriteRule ^tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301]

 

не вышло, работает только если оставить вашу одну строчку строчку

Share this post


Link to post
Share on other sites
16 часов назад, NlCKRUS сказал:

работает

 

не хочу быть навязчивым, но как сделать, чтобы и когда 2 плюса тоже работало?

написал так

RewriteRule ^tags/(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ [L,R=301]

RewriteRule ^tags/(.*)\+(.*)\+(.*)\+(.*) /tags/$1\ $2\ $3\ $4 [L,R=301]

 

не вышло, работает только если оставить вашу одну строчку строчку

Для массовой замены нужно использовать RewriteRule ^tags/(.*)\+(.*) /tags/$1\ $2 [R=301]  одну лишь строку, она будет редиректить все и tags/1+2 и tags/1+2+3 и tags/1+2+3+4 в общем любые совпадения после tags/ и соответственно возвращать tags/1 2 и tags/1 2 3 и tags/1 2 3 4. И таким образом до бесконечности хоть у вас 100500 плюсов.

Edited by INFORMLINE
  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this