Как динамически генерировать HTML-страницу с помощью PHP?

У меня есть страница, на которой отображается информация о свойстве, на основе уникального идентификатора из url, поиск в базе данных mysql для этого идентификатора, получение всей информации из этой строки и т. д., довольно стандартный.

Мне было интересно, если/как я могу создать HTML-страницы для каждой строки базы данных, как я предполагаю, что это будет лучше для SEO? Наличие нескольких страниц с ключевыми словами, а не одной динамической страницы?

мои свойства добавляются в базу данных системой формы / загрузки на сайт, я думал, что создание страницы при загрузке может быть проще всего, но я открыт для предложений!

8 ответов


мне было интересно, если/как я могу создать HTML страницу для каждой строки базы данных?

вам просто нужно создать один php файл, который генерирует шаблон html, что изменяет текстовое содержимое на этой странице. На этой странице вы можете получить параметр (например. строки ID) через POST или GET а затем получить информацию из базы данных.

Я предполагаю, что это было бы лучше для SEO?

поисковая система как Google истолкуйте это example.php?id=33 и example.php?id=44 разные страницы, и да, этот способ лучше, чем одна страница листинга с точки зрения SEO, поэтому вам просто нужно два php-файла по крайней мере (listing.php и single.php), потому что лучше связать эту страницу с listing.php.

Дополнительные советы:

example.php?id=33 действительно уродливый и не очень SEO дружественный, возможно, Вам нужен какой-то код перезаписи url. Что-то вроде example/properties/property-name лучше ;)


на всякий случай, если кто-то хочет создать/создать фактический ...

$myFile = "filename.html"; // or .php   
$fh = fopen($myFile, 'w'); // or die("error");  
$stringData = "your html code php code goes here";   
fwrite($fh, $stringData);
fclose($fh);

наслаждайтесь!


согласно вашему требованию вам не нужно генерировать HTML-страницу dynamicaly. Это можно сделать .файл htaccess .

тем не менее это пример кода для генерации HTML-страницы

<?php

 $filename = 'test.html';
 header("Cache-Control: public");
 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$filename");
 header("Content-Type: application/octet-stream; ");
 header("Content-Transfer-Encoding: binary");
?>

вы можете создать любой .формат HTML. , php-файл просто изменить расширение в имени файла


вам не нужно генерировать динамическую html-страницу, просто используйте .htaccess файл и переписать URL.


Я предлагаю вам использовать URL rewrite mod достаточно для вашей проблемы, у меня такая же проблема, но с помощью URL rewrite mod и получить хороший ответ SEO. Я могу привести небольшой пример. Пример является то, что вы считаете WordPress, здесь данные хранятся в базе данных, но с помощью URL переписать mod многие сайты WordPress получать хорошие ответы от Google и получил ранг также.

пример: wordpress url с вне url переписать мод -- domain.com/?p=123 после режима перезаписи url -- domain.com / {название статьи} like domain.com/seo-url-rewrite-mod

Я думаю, вы поняли, что я хочу сказать вам


Это выглядит смешно, но это работает.

<?php 
$file = 'newpage.html';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= "<!doctype html><html>
<head><meta charset='utf-8'>
<title>new file</title>
</head><body><h3>New HTML file</h3>
</body></html>
";
// Write the contents back to the file
file_put_contents($file, $current);
?>

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

<?php   
include("templates/header.htm");   

// Set the default name 
$action = 'index'; 
// Specify some disallowed paths 
$disallowed_paths = array('header', 'footer'); 
if (!empty($_GET['action'])) { 
    $tmp_action = basename($_GET['action']); 
    // If it's not a disallowed path, and if the file exists, update $action 
    if (!in_array($tmp_action, $disallowed_paths) && file_exists("templates/{$tmp_action}.htm")) 
        $action = $tmp_action; 
} 
// Include $action 
include("templates/$action.htm"); 

include("templates/footer.htm");

Я работал примерно так же, и у меня есть код, который может вам помочь. Живой пример -здесь и ниже, это код, который я использую для вас, чтобы иметь его в качестве ссылки.

создать-страницу.в PHP

<?php

// Session is started.
session_start();

// Name of the template file.
$template_file = 'couples-template.php';

// Root folder if working in subdirectory. Name is up to you ut must match with server's folder.
$base_path = '/couple/';

// Path to the directory where you store the "couples-template.php" file.
$template_path = '../template/';

// Path to the directory where php will store the auto-generated couple's pages.
$couples_path = '../couples/';

// Posted data.
$data['groom-name'] = str_replace(' ', '', $_POST['groom-name']);
$data['bride-name'] = str_replace(' ', '', $_POST['bride-name']);
// $data['groom-surname'] = $_POST['groom-surname'];
// $data['bride-surname'] = $_POST['bride-surname'];
$data['wedding-date'] = $_POST['wedding-date'];
$data['email'] = $_POST['email'];
$data['code'] = str_replace(array('/', '-', ' '), '', $_POST['wedding-date']).strtoupper(substr($data['groom-name'], 0, 1)).urlencode('&').strtoupper(substr($data['bride-name'], 0, 1));

// Data array (Should match with data above's order).
$placeholders = array('{groom-name}', '{bride-name}', '{wedding-date}', '{email}', '{code}');

// Get the couples-template.php as a string.
$template = file_get_contents($template_path.$template_file);

// Fills the template.
$new_file = str_replace($placeholders, $data, $template);

// Generates couple's URL and makes it frendly and lowercase.
$couples_url = str_replace(' ', '', strtolower($data['groom-name'].'-'.$data['bride-name'].'.php'));

// Save file into couples directory.
$fp = fopen($couples_path.$couples_url, 'w');
fwrite($fp, $new_file);
fclose($fp);

// Set the variables to pass them to success page.
$_SESSION['couples_url'] = $couples_url;
// If working in root directory.
$_SESSION['couples_path'] = str_replace('.', '', $couples_path);
// If working in a sub directory.
//$_SESSION['couples_path'] = substr_replace($base_path, '', -1).str_replace('.', '',$couples_path);

header('Location: success.php');

?>

надеюсь, что этот файл может помочь и работать в качестве ссылки для запуска и повышения вашего проекта.