ibs-web, по первой задаче все просто. Написал вам php-функцию, которая удалит любое повторение слэшей и сделает в итоге редирект:
[CODE]<?
// remove double slashes
function rds($uri,$step="start"){
$new_uri = str_replace("//", "/", $uri);
if(strpos($new_uri, "//") !== false){
rds($new_uri,"continue");
}elseif($step != "start"){
header("HTTP/1.1 301 Moved Permanently");
header('Location: http://'.$_SERVER['SERVER_NAME'].$new_uri);
exit();
}
}
rds($_SERVER["REQUEST_URI"]);
?>[/CODE]P.S.: у главной страницы невозможно удалить слэш, имейте это в виду. Он один всегда будет, как бы вы этого ни хотели.
По второй задаче уже придется поработать вам самому =) Дело в том, что это такая "фишка" битрикс, и она пока не исправлена. Дело в том, что так или иначе в запрос ($_REQUEST) попадает значение ELEMENT_CODE, и как бы вы не меняли части урла местами, это значение все равно будет. А 404 ошибка выдастся вам только в том случае, если по найденному ELEMENT_CODE в инфоблоке не будет найдено элемента. Что вам нужно сделать в этом случае: вам нужно кастомизировать компонент новостей, и ввести в нем проверку на [B]$arResult["SECTION"]["PATH"][0]["SECTION_PAGE_URL"][/B]. Если такового ключа не имеется, то выдавать 404 ошибку. Это для того случая, если вы находитесь в каком-либо [B]разделе[/B].
Если же вы находитесь в [B]детальной новости[/B], то тут вам нужно будет сравнить [B]$arResult["SECTION_URL"][/B] с тем урлом, который перед вами. Соответственно, если урл раздела из массива не совпадает с урлом раздела, который вбит в адресную строку, то выводить 404 ошибку.