Как удалять лишние символы из урл

Ребята такая проблема и не как не могу решать

Например одна страница моего сайта http://site.ru/smotret-online/16670/realyno!-konditer-2017/

По скольку в урл есть символ «!» страница не открывется, вместо фильма открывается 404. php страница(материал не найден).

Когда удаляю символ «!», страница с фильмом открывается.
http://site.ru/smotret-online/16670/realyno-konditer-2017/

Как можно решать эту проблему?

1. Есть код в htaccess или php с помощью которого все такие символы будут игнорированы и страница будет открыватся с этим символом.
2. Или как можно через htaccess или php сделать так чтобы где есть такие символы, они автоматически удалялись из урл

В основном в урлах встречаются такие символы и ссылки начинают не работать: & ! ( ) [ ] * + и пробел

Пытался через php получить ссылку, найти эти символы и удалить, и сделать редирект на страницу без символов, но не получилась.

Спасибо

 

@kikosik, где генерируются алиасы, там и нужно удалять всё лишнее.
— Добавлено —

PHP:
  1. <?php
  2. $name = ‘Реально! Кондитер 2017 & ! ( ) [ ] * +’;
  3.  
  4. $pattern = [‘/[\pP\pS\s]/u’, ‘/[-]+/’, ‘/[-]+$/’];
  5. $replace = [‘-‘, ‘-‘, »];
  6. echo preg_replace($pattern, $replace, $name); // Реально-Кондитер-2017
  7. // дальше — транслитерация
 

Я не понял этот код удаляет и символ «-» ис урл?
— Добавлено —
Код не работает, в тех страницах где есть эти символы, страница по старому открывается(материал не найден).

А в тех страницах где нету этих символах, страница вообше не открывается.

This page isn’t working

kinopark.su is currently unable to handle this request.

HTTP ERROR 500

 

Вы даже в суть проблемы не вникли. Как можно при этом надеяться на пмощь? :)

Если страница открывается по адресу без «!» и не открывается по адресу с «!», это значит, что у нее адрес без «!», а не то, что вы написали. Если внешняя ссылка содержит «!», то нужен либо редирект на правильный адрес, либо подстраивание адреса под эту ссылку, либо нужно забить на это дело. Если все-таки внутренняя ссылка кривая, то нужно смотреть, как она формируется/где хранится: если это просто кривая ссылка в контенте, правим контент; если кривая ссылка (или часть ссылки, т.н. слаг) берется непосредственно от объекта, который она адресует, это значит, что вы используете в таких адресах/слагах символы, запрещенные/подчищаемые вашими же собственными правилами, – либо меняйте правила на предмет пропуска всех используемых символов, либо не используйте запрещенные вашими правилами символы (добавьте в админку запрет/чистку недопустимых символов при сохранении адреса/слага; на фронте при этом правила можно смягчить).

 

miketomlin то есть можно в cpanel сделать так чтобы ссылки такими символами работали?

 

Я нашел ответ на ваш вопрос по адресу https://cryptoxer.ru/forum/url-php-help/ Здесь сказано, как это сделать. Там написан рабочий код, берите и пользуйтесь в своем проекте.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *