¿Cómo generar una página HTML de forma dinámica con PHP?

Tengo una página que muestra información sobre una propiedad, basada en la identificación única de la url, buscando en la base de datos de mysql esa ID, obteniendo toda la información de esa fila, etc., bastante estándar realmente.

Me preguntaba si / cómo puedo ‘crear’ una página html para cada fila de la base de datos, ya que supongo que esto sería mejor para el SEO. ¿Tiene varias páginas con palabras clave en lugar de una página dinámica?

Mis propiedades se agregan a la base de datos a través de un sistema de formulario / carga en el sitio. Estaba pensando que crear la página al cargar podría ser más fácil, ¡pero estoy abierto a sugerencias!

Me preguntaba si / cómo puedo ‘crear’ una página html para cada fila de la base de datos .

Solo necesita crear un archivo php que genere una plantilla html, lo que cambia es el contenido basado en texto en esa página. En esa página es donde puede obtener un parámetro (por ejemplo, id. De fila) a través de POST o GET y luego obtener la información de la base de datos.

¿Asumo que esto sería mejor para SEO?

Search Engine como Google interpreta que example.php?id=33 y example.php?id=44 son páginas diferentes, y , de esta manera es mejor que la página de lista única desde el punto de vista de SEO, por lo que solo necesita dos archivos php al menos ( listing.php y single.php ), porque es mejor vincular estas páginas de listing.php .

Consejo adicional:

example.php?id=33 es realmente feo y poco amigable, tal vez necesites algún código de reescritura de URL. Algo como example/properties/property-name es mejor;)

En caso de que alguien quiera generar / crear un archivo HTML real …

 $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); 

¡Disfrutar!

Según su requisito, no tiene que generar dinámicamente una página html. Se puede hacer con el archivo .htaccess.

Todavía esto es código de muestra para generar página 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"); ?> 

puede crear cualquier archivo .html, .php simplemente cambie la extensión en el nombre del archivo

No necesita generar ninguna página html dinámica, solo use el archivo .htaccess y vuelva a escribir la URL.

Te sugiero que uses el mod de reescritura de URL para solucionar tu problema, tengo el mismo problema pero usando el mod de reescritura de URL y obteniendo una buena respuesta de SEO. Puedo darte un pequeño ejemplo. El ejemplo es que consideras WordPress, aquí los datos se almacenan en la base de datos, pero utilizando la modificación de URL mod muchos sitios web de WordPress obtienen buenas respuestas de Google y también tienen rango.

Ejemplo: url de WordPress sin modificación de URL mod – domain.com/?p=123 después del modo de reescritura de url – domain.com/{title del artículo} como domain.com/seo-url-rewrite-mod

Creo que has entendido lo que quiero decirte

Solo actualizaré el código para contener los cambios y lo comentaré para que pueda ver lo que está pasando claramente …

 < ?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"); 

He estado trabajando de forma similar a esto y tengo un código que podría ayudarte. El ejemplo en vivo está aquí y debajo, es el código que estoy usando para que lo tengas como referencia.

create-page.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'); ?> 

Espero que este archivo pueda ayudarlo y funcionar como referencia para comenzar y potenciar su proyecto.

Se ve gracioso pero funciona.

 < ?php $file = 'newpage.html'; // Open the file to get existing content $current = file_get_contents($file); // Append a new person to the file $current .= "  new file 

New HTML file

"; // Write the contents back to the file file_put_contents($file, $current); ?>