[QUOTE]
Олег Орестов пишет:
Папку information я не учитывал в правиле. Ее туда нужно добавить.
[QUOTE] Алексей Сумин пишет:
А не проще комплексный компонент news использовать?
[/QUOTE]Я слышал, в некоторых студиях за одну фразу "комплексный компонент" печатали код всех компонентов, входящих в комплексный компонент catalog, и заставляли эту распечатку есть.
[/QUOTE]Спасибо большое! Полазив в сети, я увидел, что файл urlrewrite подключается на странице 404 в самом верху
[CODE]include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');[/CODE]Открыв файл, я увидел следующее:
Скрытый текст |
---|
[CODE]<?[/CODE][CODE]if(file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/d7.php")[/CODE][CODE]{[/CODE][CODE] require_once(dirname(__FILE__)."/. ./bx_root.php";[/CODE][CODE][/CODE][CODE] include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/lib/loader.php";[/CODE][CODE][/CODE][CODE] /** @var $application \Bitrix\Main\HttpApplication */[/CODE][CODE] $application = \Bitrix\Main\HttpApplication::getInstance();[/CODE][CODE] $application->turnOnCompatibleMode();[/CODE][CODE] $application->setInputParameters([/CODE][CODE] $_GET, $_POST, $_FILES, $_COOKIE, $_SERVER, $_ENV[/CODE][CODE] ;[/CODE][CODE][/CODE][CODE] $application->initialize();[/CODE][CODE][/CODE][CODE] $page = new \Bitrix\Main\PublicPage();[/CODE][CODE] $application->setPage($page);[/CODE][CODE][/CODE][CODE] $application->start();[/CODE][CODE][/CODE][CODE] CMain::PrologActions();[/CODE][CODE] require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_after.php";[/CODE][CODE][/CODE][CODE] return;[/CODE][CODE]}[/CODE][CODE][/CODE][CODE]error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR|E_PARSE);[/CODE][CODE]require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/charset_converter.php";[/CODE][CODE]require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/tools.php";[/CODE][CODE][/CODE][CODE]//try to fix REQUEST_URI under IIS[/CODE][CODE]$aProtocols = array('http', 'https');[/CODE][CODE]foreach($aProtocols as $prot)[/CODE][CODE]{[/CODE][CODE] $marker = "404;".$prot."://";[/CODE][CODE] if(($p = strpos($_SERVER["QUERY_STRING"], $marker)) !== false)[/CODE][CODE] {[/CODE][CODE] $uri = $_SERVER["QUERY_STRING"];[/CODE][CODE] if(($p = strpos($uri, "/", $p+strlen($marker))) !== false)[/CODE][CODE] {[/CODE][CODE] if($_SERVER["REQUEST_URI"] == '' || $_SERVER["REQUEST_URI"] == '/404.php' || strpos($_SERVER["REQUEST_URI"], $marker) !== false)[/CODE][CODE] $_SERVER["REQUEST_URI"] = $REQUEST_URI = substr($uri, $p);[/CODE][CODE] $_SERVER["REDIRECT_STATUS"] = '404';[/CODE][CODE] $_SERVER["QUERY_STRING"] = $QUERY_STRING = "";[/CODE][CODE] $_GET = array();[/CODE][CODE] break;[/CODE][CODE] }[/CODE][CODE] }[/CODE][CODE]}[/CODE][CODE][/CODE][CODE]if (!defined("AUTH_404")[/CODE][CODE] define("AUTH_404", "Y";[/CODE][CODE][/CODE][CODE]require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/bx_root.php";[/CODE][CODE]require_once($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/dbconn.php";[/CODE][CODE][/CODE][CODE]define("BX_URLREWRITE", true);[/CODE][CODE][/CODE][CODE]$requestUri = urldecode($_SERVER["REQUEST_URI"][/CODE][CODE][/CODE][CODE]$bUTF = (!defined("BX_UTF" && CUtil:etectUTF8($_SERVER["REQUEST_URI"]);[/CODE][CODE]if($bUTF)[/CODE][CODE] $requestUri = CharsetConverter::ConvertCharset($requestUri, "utf-8", (defined("BX_DEFAULT_CHARSET"? BX_DEFAULT_CHARSET : "windows-1251");[/CODE][CODE][/CODE][CODE]include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/virtual_io.php";[/CODE][CODE]$io = CBXVirtualIo::GetInstance();[/CODE][CODE][/CODE][CODE]$arUrlRewrite = array();[/CODE][CODE]if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php")[/CODE][CODE] include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php";[/CODE][CODE][/CODE][CODE]if(isset($_SERVER['REDIRECT_STATUS'] && $_SERVER['REDIRECT_STATUS'] == '404' || isset($_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"])[/CODE][CODE]{[/CODE][CODE] if(isset($_SERVER['REDIRECT_STATUS'] && $_SERVER['REDIRECT_STATUS'] == '404')[/CODE][CODE] $url = $requestUri;[/CODE][CODE] else[/CODE][CODE] $url = $requestUri = $_SERVER["REQUEST_URI"] = $REQUEST_URI = (is_array($_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"]? '':$_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"][/CODE][CODE][/CODE][CODE] if(($pos=strpos($url, "?")!==false)[/CODE][CODE] {[/CODE][CODE] $params = substr($url, $pos+1);[/CODE][CODE] parse_str($params, $vars);[/CODE][CODE][/CODE][CODE] $_GET += $vars;[/CODE][CODE] $_REQUEST += $vars;[/CODE][CODE] $GLOBALS += $vars;[/CODE][CODE] $_SERVER["QUERY_STRING"] = $QUERY_STRING = $params;[/CODE][CODE] }[/CODE][CODE][/CODE][CODE] $HTTP_GET_VARS = $_GET;[/CODE][CODE] $sUrlPath = GetPagePath();[/CODE][CODE] $strNavQueryString = DeleteParam(array("SEF_APPLICATION_CUR_PAGE_URL");[/CODE][CODE] if($strNavQueryString != ""[/CODE][CODE] $sUrlPath = $sUrlPath."?".$strNavQueryString;[/CODE][CODE] define("POST_FORM_ACTION_URI", htmlspecialcharsbx("/bitrix/urlrewrite.php?SEF_APPLICATION_CUR_PAGE_URL=".urlencode($sUrlPath)));[/CODE][CODE]}[/CODE][CODE][/CODE][CODE]foreach($arUrlRewrite as $val)[/CODE][CODE]{[/CODE][CODE] if(preg_match($val["CONDITION"], $requestUri))[/CODE][CODE] {[/CODE][CODE] if (strlen($val["RULE"] > 0)[/CODE][CODE] $url = preg_replace($val["CONDITION"], (strlen($val["PATH"] > 0 ? $val["PATH"]."?" : "".$val["RULE"], $requestUri);[/CODE][CODE] else[/CODE][CODE] $url = $val["PATH"];[/CODE][CODE][/CODE][CODE] if(($pos=strpos($url, "?")!==false)[/CODE][CODE] {[/CODE][CODE] $params = substr($url, $pos+1);[/CODE][CODE] parse_str($params, $vars);[/CODE][CODE][/CODE][CODE] $_GET += $vars;[/CODE][CODE] $_REQUEST += $vars;[/CODE][CODE] $GLOBALS += $vars;[/CODE][CODE] $_SERVER["QUERY_STRING"] = $QUERY_STRING = $params;[/CODE][CODE] $url = substr($url, 0, $pos);[/CODE][CODE] }[/CODE][CODE][/CODE][CODE] $url = _normalizePath($url);[/CODE][CODE][/CODE][CODE] if(!$io->FileExists($_SERVER['DOCUMENT_ROOT'].$url))[/CODE][CODE] continue;[/CODE][CODE][/CODE][CODE] if (!$io->ValidatePathString($io->GetPhysicalName($url)))[/CODE][CODE] continue;[/CODE][CODE][/CODE][CODE] $urlTmp = strtolower(ltrim($url, "/\\");[/CODE][CODE] $urlTmp = str_replace(".", "", $urlTmp);[/CODE][CODE] $urlTmp = substr($urlTmp, 0, 7);[/CODE][CODE] if (($urlTmp == "bitrix/" || ($urlTmp == "upload/")[/CODE][CODE] continue;[/CODE][CODE][/CODE][CODE] $ext = strtolower(GetFileExtension($url));[/CODE][CODE] if ($ext != "php"[/CODE][CODE] continue;[/CODE][CODE][/CODE][CODE] CHTTP::SetStatus("200 OK";[/CODE][CODE][/CODE][CODE] $_SERVER["REAL_FILE_PATH"] = $url;[/CODE][CODE][/CODE][CODE] include_once($io->GetPhysicalName($_SERVER['DOCUMENT_ROOT'].$url));[/CODE][CODE][/CODE][CODE] die();[/CODE][CODE] }[/CODE][CODE]}[/CODE][CODE][/CODE][CODE]//admin section 404[/CODE][CODE]if(strpos($requestUri, "/bitrix/admin/" === 0)[/CODE][CODE]{[/CODE][CODE] include($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/404.php";[/CODE][CODE] die();[/CODE][CODE]}[/CODE][CODE][/CODE][CODE]define("BX_CHECK_SHORT_URI", true);[/CODE][CODE]?>[/CODE] |
[CODE]Не могу сказать, что понимаю все, что тут описывается, буду разбираться. Но есть строки:
$arUrlRewrite = array();
if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php")
include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php";[/CODE]В все таки подключается urlrewrite.php который я поправил:
[CODE]<?
$arUrlRewrite = array(
array(
"CONDITION" => "#^/information/news/([0-9]+)/(.)*#",
"RULE" => "ID=$1",
"ID" => "bitrix:news.detail",
"PATH" => "/information/news/detail.php",
,
);
?>[/CODE]Не обессудьте за нагроможденность в вопросе, просто хочу разобраться!