Редиректит новые страницы на главную.

I
На сайте с 14.10.2008
Offline
199
439

Сайт восстановлен с вебархива, на голом html, в корне стоит php скрипт, видимо чтобы страницы которые не восстановились перекидывало на главную. Но почему то сейчас и новые страницы которые закачиваю на хостинг-домен редиректит на главную, то есть страница на домене есть, но её перекидывет на главную. Если скрипт убрать вообще, тогда почему то картинки не грузятся.

Кто подскажет, почему новые страницы редиректит и как исправить? Пробовал сам в скрипте что то удалял, закрывал ничего не выходит, вернул как было.

.htaccess

#AddDefaultCharset UTF-8
DirectorySlash Off

# important!
Options -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]

RewriteCond %{REQUEST_FILENAME} !/_routing.php$
RewriteRule ^(.*)$ _routing\.php\?$1 [QSA,L]

</IfModule>

Вот сам скрипт _routing.php

<?php

// ***************************************
// ***
// *** Do not touch anything unless
// *** you know what you're doing
// ***
// ***************************************
// -- KoXa

//--------- Active Configuration ------//

// default: 'plain'
$conf['active'] = 'plain'; // mysql, sqlite3, plain
//------------------------------------//

//--------mysql---------//
$conf['mysql']['host'] = 'localhost';
$conf['mysql']['user'] = 'root';
$conf['mysql']['pass'] = 'qwerty';
$conf['mysql']['db'] = 'lookup';
$conf['mysql']['table'] = 'lookup';

//--------plain/text------//
$conf['plain']['db'] = '.userfiles/db.list';

//--------sqlite----------//
$conf['sqlite3']['db'] = '.userfiles/db.sqlite3';
$conf['sqlite3']['table'] = 'lookup';


$conf['site_uri'] = get_site_dir();

// here we go

$p = get_uri_heuristic();

if (!$p || $p == "/") $p = './'; // index page
if (preg_match('#^(\/|\.\./)#', $p)||preg_match('#\./\.#',$p)) die_not_found();

$get_node = "get_node_".$conf['active'];
$node = $get_node($p);



if (!$node) die_not_found();



header("Content-Type: $node[ctype]");

if (!file_exists($node['realname'])) die_not_found();

// if (preg_match('/.*\.php$/i', $node['realname'])) include_once($node['realname']);
// else echo file_get_contents($node['realname']);

$html = file_get_contents($node['realname']);
parse_asserts($html);
echo $html;



//----------helpers-----------//

function get_node_plain($uri) {
global $conf;

$routes = file_get_contents($conf['plain']['db']);
$regex = quotez($uri).'\s*=>\s*(.*?)\s*=>\s*(.*)';
$regex = str_replace('#', '\#', $regex);
//die($regex);
$row = array();

if (preg_match("#$regex#", $routes, $matches)) {

$row['realname'] = trim($matches[1]);
$row['ctype'] = trim($matches[2]);

} return $row;
}

function get_node_sqlite3($uri) {
global $conf;

if (!_enabled('sqlite3')) die();
if (!file_exists($conf['sqlite3']['db'])) die("SQLITE ERROR: NO ROUTING DB");

$db = new SQLite3($conf['sqlite3']['db']);
if (!$db) die("SQLITE ERROR: DB OPEN FAILED");

$uri = sqlite_escape_string($uri);

$stmt = $db->prepare("SELECT * FROM `".$conf['sqlite3']['table']."` WHERE `uri` = :uri LIMIT 0,1");
$stmt->bindValue(':uri', $uri);
$res = $stmt->execute();
if ($row = $res->fetchArray(SQLITE3_ASSOC)) {
return $row;
} else {
return false;
}

}

function get_node_mysql($uri) {
global $conf;

$db = mysql_connect($conf['mysql']['host'], $conf['mysql']['user'], $conf['mysql']['pass']) or die("db open error: ".mysql_error());
mysql_select_db($conf['mysql']['db']) or die("cannot select db: ".mysql_error());
mysql_query("SET NAMES utf8");


$uri = mysql_real_escape_string($uri);
$query = "SELECT * FROM `".$conf['mysql']['table']."` WHERE `uri` = '$uri' LIMIT 0,1";
$res = mysql_query($query) or die(mysql_error());
if ($row = mysql_fetch_assoc($res)) {
return $row;
} else {
return false;
}


}


function get_uri_heuristic() {
global $conf;
//$p = $_SERVER['QUERY_STRING'];
$z = $_SERVER['REQUEST_URI'];

$z = preg_replace('/^'.quotez($conf['site_uri']).'/', '', $z, 1); // только 1 замена
if ($z == "index.html") $z = ""; // на некоторых серваках такой сброс нужен



return $z;
}

function quotez($str) {

return preg_replace('/([^a-zA-Z_0-9])/', '\\\\\1', $str);
}

function die_not_found() {
global $p, $conf;
if ($p != './' && $p != '/' && $p != 'index.html') { // redirect unless index page
header("Location: $conf[site_uri]");
die();
} else {
die("NOT FOUND");
}

}

function _enabled($opt) {
switch($opt) {
case 'sqlite3':

if (!class_exists('SQLite3')) {
print nl2br('SQLITE_3 NOT ENABLED

<b>sudo apt-get install php5-sqlite</b>

and restart Apache');
return 0;
} else {
return 1;
}

break;
}
}

function get_site_dir() {
/*
$p = $_SERVER['QUERY_STRING'];
$z = $_SERVER['REQUEST_URI'];
if ($p == "index.html") $p = ""; // на некоторых серваках такой сброс нужен
*/
$script_name = "_routing.php";
$s = $_SERVER['SCRIPT_FILENAME'];
if (preg_match('#.*/(\S+)#', $s, $m)) $script_name = $m[1];
$r = $_SERVER['DOCUMENT_ROOT'];

$ret = preg_replace('/^'.quotez($r).'/', '', $s);
$ret = preg_replace('/'.quotez($script_name).'$/', '', $ret);
if (!$ret) $ret="/";
return $ret;
}

function parse_asserts(&$html) {

$assert['header.php']='';
$assert['footer.php']='';


$_dir = ".userfiles";


foreach (glob("$_dir/*.inc.php") as $filename) {
include_once($filename);
}

foreach($assert as $mask => $val) {
foreach(glob("$_dir/*$mask") as $fname) {
if (file_exists($fname)) {
ob_start();
include_once($fname);
$assert[$mask] .= ob_get_clean();
}
}
}

//$html = preg_replace('#</head>#i', $assert['head'].'</head>', $html);
$html = preg_replace('#(<body(.*?)>)#i','${1}'.$assert['header.php'], $html);
$html = preg_replace('#</body>#i', $assert['footer.php'].'</body>', $html);
$html = preg_replace('#src="/media/plg_jchoptimize/images/placeholder\.gif"#i','', $html);
$html = preg_replace('#data-src#i','src', $html);

}

?>
20💲 Бесплатно на баланс API DeepSeek 👉 https://vk.cc/cK73ur | 💲💲💲 Моментальный выпуск виртуальных карт для оплаты за рубежом 👉 https://bit.ly/online-cards | 📝 Нейро Тексты для сайтов, быстро, дешево и качественно 👉 https://bit.ly/xgptwriter 👈
M
На сайте с 04.12.2013
Offline
223
#1

Добавьте к правилу условие «если НЕ файл».

---------- Добавлено 18.09.2018 в 10:47 ----------

Или замените им имеющееся условие.

---------- Добавлено 18.09.2018 в 11:04 ----------

в корне стоит php скрипт, видимо чтобы страницы которые не восстановились перекидывало на главную
Не, он разруливает адреса в реальные имена файлов, насколько понял. Слив всех «промахов» на главную – не лучшая практика. Лучше отредактировать die_not_found().

P.S. При использовании мускула и более-менее симпатичных адресов (без кучи GET-параметров) можно попробовать этот движок.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
S
На сайте с 30.09.2016
Offline
469
#2
igoreff:
Но почему то сейчас и новые страницы которые закачиваю на хостинг-домен редиректит на главную, то есть страница на домене есть, но её перекидывет на главную.

Недостаточно просто закачать страницу на хостинг, надо ещё и вписать адрес в базу данных.

ЗЫ: на десятом году общения с сёрчем пора бы уже узнать, что вставка кода через иконку "php" мешает Вам получить ответ. Не каждый будет заморачиваться и читать эти каракули. Так как программистов сёрча ни в чём убедить не получается, используйте иконку # для вставки кода.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
I
На сайте с 14.10.2008
Offline
199
#3
Sitealert:
Недостаточно просто закачать страницу на хостинг, надо ещё и вписать адрес в базу данных.

ЗЫ: на десятом году общения с сёрчем пора бы уже узнать, что вставка кода через иконку "php" мешает Вам получить ответ. Не каждый будет заморачиваться и читать эти каракули. Так как программистов сёрча ни в чём убедить не получается, используйте иконку # для вставки кода.

В php не спец, да и никогда код php сюда не вставлял, так что извините, отредактировать первое сообщение, тоже уже не выходит.

S
На сайте с 30.09.2016
Offline
469
#4

Я уже дал ответ: нужно внести записи в базу данных.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий