Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Помогиет пожалуйста с ЧПУ

00 голосов
5
Добрый день, форумчане.
Есть сайт на битриксе ekostat.ru.
Так вот на нем почем-то перестало работать ЧПУ.
Ничего с сайтом не делал. Просто само по себе. Мистика какая-то.
Причем на хостинге у меня 2 сайта на битриксе. На одном все в порядке, а с ekostat.ru проблема.
Пример: http://www.ekostat.ru/stati/ - тут перечень статей.... не открывает их и все тут. Даже 404 ошибку не пишет.

Подскажиет пож-та, что может быть не так???
спросил 19 Ноя, 13 от perdyn (100 баллов)

5 Ответы

00 голосов
Покажите содержимое файла urlrewrite.php из корня сайта.
ответил 08 Янв, 14 от Ly (4,580 баллов)
00 голосов
<?
$arUrlRewrite = array(
array(
"CONDITION" => "#^/catalog/programs/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/programs/index.php",
),
array(
"CONDITION" => "#^/catalog/dogovor/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/dogovor/index.php",
),
array(
"CONDITION" => "#^/catalog/uslugi/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/uslugi/index.php",
),
array(
"CONDITION" => "#^/catalog/kursi/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/kursi/kursi.php",
),
array(
"CONDITION" => "#^/catalog/bases/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/bases/index.php",
),
array(
"CONDITION" => "#^/catalog/index/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/index/index.php",
),
array(
"CONDITION" => "#^/catalog/kursi/#",
"RULE" => "",
"ID" => "bitrix:catalog",
"PATH" => "/catalog/kursi/index.php",
),
array(
"CONDITION" => "#^/poleznoe/#",
"RULE" => "",
"ID" => "bitrix:news",
"PATH" => "/poleznoe/index.php",
),
array(
"CONDITION" => "#^/stati/#",
"RULE" => "",
"ID" => "bitrix:news",
"PATH" => "/stati/index.php",
),
array(
"CONDITION" => "#^/forum/#",
"RULE" => "",
"ID" => "bitrix:forum",
"PATH" => "/forum/index.php",
),
array(
"CONDITION" => "#^/stati/#",
"RULE" => "",
"ID" => "bitrix:news",
"PATH" => "/stati.php",
),
array(
"CONDITION" => "#^/blog/#",
"RULE" => "",
"ID" => "bitrix:blog",
"PATH" => "/blog/index.php",
),
);

?>
ответил 25 Апр, 14 от perdyn (100 баллов)
00 голосов
А что у вас в файле .htaccess в корне сайта?
ответил 19 Авг, 14 от Ly (4,580 баллов)
00 голосов
Код

array(
"CONDITION" => "#^/stati/#",
"RULE" => "",
"ID" => "bitrix:news",
"PATH" => "/stati/index.php",
), 

array(
"CONDITION" => "#^/stati/#",
"RULE" => "",
"ID" => "bitrix:news",
"PATH" => "/stati.php",
), 



два одинаковых правила. Одно отправляет на index.php второе на stati.php, какой у вас файл рабочий?
ответил 25 Дек, 14 от Poleolog (1,240 баллов)
00 голосов
Цитата
Dmitry Ban пишет:
А что у вас в файле .htaccess в корне сайта?


В .htaccess след-щее:

Options -Indexes
ErrorDocument 404 /404.php

#php_flag session.use_trans_sid off
#php_value display_errors 1
#php_flag allow_call_time_pass_reference 1

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

<IfModule mod_mime.c>
AddType application/x-httpd-php .ico
</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
</IfModule>

RewriteEngine On
RewriteCond %{HTTP_HOST} ^ekostat.ru
RewriteRule (.*) http://www.ekostat.ru/$1 [R=301,L]

В /bitrix/urlrewrite.php:
<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
if(file_exists($_SERVER['DOCUMENT_ROOT'].'/404.php'))
include_once($_SERVER['DOCUMENT_ROOT'].'/404.php');
?>

В bitrix/modules/main/include/urlrewrite.php: (раньше было Zend - а текущее спопировал с рабочего варианта 2-го сайта)

<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/tools.php");

//try to fix REQUEST_URI under IIS
if(($p = strpos($_SERVER["QUERY_STRING"], "404;http://")) !== false)
{
$uri = $_SERVER["QUERY_STRING"];
if(($p = strpos($uri, "/", $p+11)) !== false)
{
$_SERVER["REQUEST_URI"] = $REQUEST_URI = substr($uri, $p);
$_SERVER["REDIRECT_STATUS"] = '404';
$_SERVER["QUERY_STRING"] = $QUERY_STRING = "";
$_GET = array();
}
}

if (!defined("AUTH_404"))
define("AUTH_404", "Y");

$arUrlRewrite = array();
if(file_exists($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php"))
include($_SERVER['DOCUMENT_ROOT']."/urlrewrite.php");

if(isset($_SERVER['REDIRECT_STATUS']) && $_SERVER['REDIRECT_STATUS'] == '404' || isset($_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"]))
{
if(isset($_SERVER['REDIRECT_STATUS']) && $_SERVER['REDIRECT_STATUS'] == '404')
$url = $_SERVER["REQUEST_URI"];
else
$url = $_SERVER["REQUEST_URI"] = $REQUEST_URI = (is_array($_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"])? '':$_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"]);

if(($pos=strpos($url, "?"))!==false)
{
$params = substr($url, $pos+1);
parse_str($params, $vars);

$_GET += $vars;
$_REQUEST += $vars;
$GLOBALS += $vars;
$_SERVER["QUERY_STRING"] = $QUERY_STRING = $params;
}

$HTTP_GET_VARS=$_GET;
$sUrlPath = GetPagePath();
$strNavQueryString = DeleteParam(array("SEF_APPLICATION_CUR_PAGE_URL"));
if($strNavQueryString != "")
$sUrlPath = $sUrlPath."?".$strNavQueryString;
define("POST_FORM_ACTION_URI",htmlspecialchars("/bitrix/urlrewrite.php?SEF_APPLICATION_CUR_PAGE_URL=".urlencode($sUrlPath)));
}

foreach($arUrlRewrite as $val)
{
if(preg_match($val["CONDITION"], $_SERVER["REQUEST_URI"]))
{
if (strlen($val["RULE"]) > 0)
$url = preg_replace($val["CONDITION"], (StrLen($val["PATH"]) > 0 ? $val["PATH"]."?" : "").$val["RULE"], $_SERVER["REQUEST_URI"]);
else
$url = $val["PATH"];

if(($pos=strpos($url, "?"))!==false)
{
$params = substr($url, $pos+1);
parse_str($params, $vars);

$_GET += $vars;
$_REQUEST += $vars;
$GLOBALS += $vars;
$_SERVER["QUERY_STRING"] = $QUERY_STRING = $params;
$url = substr($url, 0, $pos);
}
if(!file_exists($_SERVER['DOCUMENT_ROOT'].$url) || !is_file($_SERVER['DOCUMENT_ROOT'].$url))
continue;

CHTTP::SetStatus("200 OK");

$_SERVER["REAL_FILE_PATH"] = $url;

include_once($_SERVER['DOCUMENT_ROOT'].$url);

die();
}
}
?>

Цитата
Андрей Шилов пишет:
два одинаковых правила. Одно отправляет на index.php второе на stati.php, какой у вас файл рабочий?


Рабочий - "/stati/index.php"
ответил 14 Апр, 15 от perdyn (100 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 08 Май, 14 от HuT (100 баллов)
0 голосов
2 ответов
0 голосов
2 ответов
спросил 25 Окт, 13 от UpueH (120 баллов)
0 голосов
6 ответов
0 голосов
7 ответов
спросил 11 Авг, 13 от Cathafine (160 баллов)