1. Удаление слэша главной страницы вида http://domen.ru/ , http://domen.ru//, http://domen.ru////////////////// . Необходимо чтобы при вводе одного или нескольких слэшей происходил 301 редирект на http://domen.ru . Как избавится от слэшей на главной странице и на остальных?
2. Компонент bitrix:news . При использовании #SECTION_CODE_PATH# не срабатывает 404 ошибка. Пример: url выстроен с помощью #SECTION_CODE_PATH# - http://domen.ru/buy/xxxxxxx/xxxxx/xxxxxxxxx.html . Если мы напишем следующим образом(в url восклицательные знаки добавил) - http://domen.ru/buy/xxxxxxx/xx!!!!!xx/xxxxxxxxx.html ,то отдастся код 200 и элемент по прежнему останется отображаться. Как сделать, чтобы при неверном url отдавался код 404 ?
P.S.: у главной страницы невозможно удалить слэш, имейте это в виду. Он один всегда будет, как бы вы этого ни хотели.
По второй задаче уже придется поработать вам самому =) Дело в том, что это такая "фишка" битрикс, и она пока не исправлена. Дело в том, что так или иначе в запрос ($_REQUEST) попадает значение ELEMENT_CODE, и как бы вы не меняли части урла местами, это значение все равно будет. А 404 ошибка выдастся вам только в том случае, если по найденному ELEMENT_CODE в инфоблоке не будет найдено элемента. Что вам нужно сделать в этом случае: вам нужно кастомизировать компонент новостей, и ввести в нем проверку на $arResult["SECTION"]["PATH"][0]["SECTION_PAGE_URL"]. Если такового ключа не имеется, то выдавать 404 ошибку. Это для того случая, если вы находитесь в каком-либо разделе.
Если же вы находитесь в детальной новости, то тут вам нужно будет сравнить $arResult["SECTION_URL"] с тем урлом, который перед вами. Соответственно, если урл раздела из массива не совпадает с урлом раздела, который вбит в адресную строку, то выводить 404 ошибку.
Максим, спасибо за ответ. Протестировал и вот что у меня получилось: 1. Если я пишу http://domen.ru////// - срабатывает. Отлично. 2. Если я пишу http://domen.ru// - не срабатывает. Редирект не происходит.
По второму вопросу написал костыль примерно по вашему способу.