- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Подскажите плиз как заставить сайт на html обрабатывать php код, ни в какую не хочет.
Домен добавлен на сервер с поддержкой PHP как CGI
В .htaccess прописано следующее:
DirectorySlash Off
AddHandler php-cgi .html .htm .phtml .php
# important!
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]
RewriteCond %{REQUEST_FILENAME} !/_routing.php$
RewriteRule ^(.*)$ _routing\.php\?$1 [QSA,L]
</IfModule>
Но строка -
Пробовал и
AddType application/x-httpd-php .php .htm .html .phtml
Ответ тех. поддержки хостинга, тоже не дал надежд(
Вставки php в html начинают работать только если отключить этот кусок кода в .htaccess :
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]
RewriteCond %{REQUEST_FILENAME} !/_routing.php$
RewriteRule ^(.*)$ _routing.php?$1 [QSA,L]
Но если его отключить - сайт перестаёт корретно отображаться.
Копромиса, к сожелению найти не удалось.
Вопрос: У меня сайт на чистом HTML, как мне вставить скрипт?
Ответ: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку:
AddType application/x-httpd-php .php .htm .html
или
AddHandler application/x-httpd-php .php .htm .html .phtml
или
AddHandler x-httpd-php .php .htm .html .phtml
или
AddType application/x-httpd-php5 .php .htm .html
или
AddHandler application/x-httpd-php5 .php .htm .html .phtml
или
AddHandler x-httpd-php5 .php .htm .html .phtml
или
AddHandler cgi-script .html .htm
Вопрос: У меня сайт на чистом HTML, как мне вставить скрипт?
Ответ: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку:
AddType application/x-httpd-php .php .htm .html
или
AddHandler application/x-httpd-php .php .htm .html .phtml
или
AddHandler x-httpd-php .php .htm .html .phtml
или
AddType application/x-httpd-php5 .php .htm .html
или
AddHandler application/x-httpd-php5 .php .htm .html .phtml
или
AddHandler x-httpd-php5 .php .htm .html .phtml
или
AddHandler cgi-script .html .htm
Спасибо, пробовал без результатно, сейчас еще раз попробую.
Увы но результат такой же, php не обрабатывается, а в большинстве случаев и вовсе сайт перестает работать и вместо открытия страницы предлагает скачать файл _routing.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);
}
?>
Подскажите пожалуйста куда копать, в php практически нуб(
Судя по тому, что вам предлагается скачать файл _routing.php , у вас таки происходит Rewrite запроса на этот файл.
Добавьте
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
перед
RewriteRule ^(.*)$ _routing.php?$1 [QSA,L]
Проблема решена спасибо, дело еще было в том что сайт напрямую хтмл файлы не отдает, все обращения к сайту обрабатываются файлом _routing.php.
Отвратительный роутинг, судя по всему, через него пропускается вся статика. Но зачем? В .htaccess добавить проверку существования файла.