Menu en documento txt

Buenas a todos:

Nota: he creado un hilo nuevo dado que en el hilo que pregunte no obtengo respuesta.

Quiero saber para aquellas personas que no trabajamos con ningún programa especializado para crear webs (dreamweaver, html-kit, etc) y que trabajamos con editores de texto (en mi caso Sublime Text) como podemos hacer para crear los enlaces del menú en un archivo separado, me explico; crear un documento con una extensión determinada (en este caso me refiero a la extensión txt) en la cual, sea en uno o varios archivos, definiremos los enlaces a usar dependiendo de la posición del archivo HTML.

Explico esto de "dependiendo de la posición":

- Si es el index, tendremos un archivo txt llamado "enlaces-index" donde definiremos los enlaces solo para el index.

Si entramos en una carpeta, la situación o posición del archivo con respecto al index varia, es decir, para acceder a carpetas donde desde el index decíamos "ejemplo/ejemplo.html" ahora necesitamos "../ejemplo/ejemplo.html".

- Entonces, para este caso (nos referimos al caso de que estemos dentro de una carpeta) definiremos otro txt con los enlaces para todos los archivos.

Asi sucesivamente en caso de que entremos a mas carpetas.

Después dentro de cada archivo HTML definiremos una regla para que recoja los enlace de un archivo txt u otro.


P.D:

Esto que coloco a continuación es una aclaración para aquellos que no saben como generar un código genérico para determinados archivos HTML. El código que coloco a continuación realiza la siguiente acción: imaginemos que definimos los enlaces para un HTML que esta dentro de una carpeta, tendríamos manualmente que copiar, pegar el código en otro archivo HTML (que este dentro de una carpeta después del index al igual que este) y cambiar los enlaces para que funcionen. Existe una manera de generalizar el código para no tener que estar modifican dolo todo el tiempo. Es el código que dejo a continuación:


<!-- Imaginemos que este es el menu del archivo 1 -->

<ul>
   <li><a href="archivo_1.html">Enlace</a></li>
   <li><a href="carpeta_2/archivo_2.html">Enlace</a></li>
   <li><a href="carpeta_3/archivo_3.html">Enlace</a></li>
   <li><a href="carpeta_4/archivo_4.html">Enlace</a></li>
</ul>

<!-- Para el archivo 2 haríamos lo siguiente -->

<ul>
   <li><a href="carpeta_1/archivo_1.html">Enlace</a></li>
   <li><a href="archivo_2.html">Enlace</a></li>
   <li><a href="carpeta_3/archivo_3.html">Enlace</a></li>
   <li><a href="carpeta_4/archivo_4.html">Enlace</a></li>
</ul>

<!--
 Asi sucesivamente para cada archivo

 Bueno, a mi ver creo que esto todo el mundo lo abra, pero siempre existe algún despistado como yo que no se da cuenta

 Podemos en lugar de ir modificando el menú para cada "archivo x" definir un menú general del siguiente modo

 -->

<ul>
   <li><a href="carpeta_1/archivo_1.html">Enlace</a></li>
   <li><a href="carpeta_2/archivo_2.html">Enlace</a></li>
   <li><a href="carpeta_3/archivo_3.html">Enlace</a></li>
   <li><a href="carpeta_4/archivo_4.html">Enlace</a></li>
</ul>

<!-- 

 Abra gente que diga que menuda tontería, voy a coger pegarlo en cada archivo HTML y simplemente quitar la palabra "carpeta_x/" del archivo en el que me encuentre.

 Esta equivocado, en lugar de estar quitando ni añadiendo nada, el menú se queda de ese modo, la explicación es fácil. 

 En lugar de estar modificando cada enlace dependiendo del archivo, lo que hago es dejar definido que, aunque este en la "carpeta_x" voy a salir y volver a entrar en la misma
 carpeta para abrir el "archivo_x". De este modo dejo de estar modificando el menú para cada archivo porque el navegador volverá a entrar a la misma    carpeta. De este modo
 si estoy en la "carpeta_1" y hago clic en el enlace para recargar "archivo_1" el navegador interpretara lo siguiente: "estoy en carptea_1,
 salgo de esta, entro a carpeta_1, ejecuto archivo_1.html"

 Como podéis comprobar, el navegador vuelve a situarse en la misma carpeta que estaba y ejecuta el archivo correcto. Así que, al copiar el menú a otro archivo este ya tiene
 definido que debe salir de la carpeta en la que esta y entrar a otra carpeta diferente para ejecutar el "archivo_x", mientras que para su propio archivo ocurrirá lo mismo
 que en el ejemplo.

 Por si alguien cree que esto da error en el W3C, decir que no ve esto como un error de redundancia ni nada por el estilo.

-->

Puede parecer una tontería, pero aprovecho este ejemplo para aclarar lo siguiente, este código seria el que definiría dentro del txt para aquellos archivos que estén dentro de, 1, 2 o 3 carpetas, dejando definido dentro de este el menú con el código generalizado.

Si alguien no entiende que es lo quiero hacer por favor decirlo e intentare explicarme de mejor forma.
Hola!

¿Qué has intentado hasta el momento y por qué no ha funcionado (algún error o algo por el estilo)?

Para leer los contenidos del archivo, usa file_get_contents. Por otro lado, si necesitas leer los archivos que hay en una determinada carpeta, puedes usar scandir:

$dir = "mis_archivos/txt";
$files_in_dir = scandir ($dir);

foreach ($files_in_dir as $file)
{
    // Haces algo con $file. $file contiene la ruta completa hacia el archivo.
    // Por ejemplo:
    echo file_get_contents ($file);
}

Una pregunta aparte: ¿por qué estas creando un gestor de contenidos si puedes usar Wordpress, Joomla, Drupal u otro gestor? Tal vez no estás creando un gestor de contenidos, pero estas utilizando todas las funciones que ya incorpora uno.
Buenas skaparate:

El programa que uso para programación web es el editor de texto "Sublime Text". Es un editor de texto que viene preparado para poder programar en bastantes lenguajes de programación. No uso wordpress, dreamweaver, html-kit, ni nada por el parecido dado que, hace un tiempo (cuando empece a programar páginas web), intente usar un par de programas y me daban algunos errores, después descubrí este programa y me es muy útil, no solo para las páginas web, pero defecto que tiene es que no me ofrece funciones como esta por la que pregunto.

Con respecto al archivo del menú lo que pretendo es lo siguiente, introducir cierto código en HTML para obtener el contenido del archivo txt y que este sea introducido en el HTML, me explico y aclaro mejor.

No tengo nada configurado hasta el momento, nunca he realizado nada de este estilo, entonces, lo que tengo en mente era si, a través de de algún lenguaje de programación como javascript, php o incluso el propio HTML, es posible introducir el contenido de un archivo txt dentro del HTML. Lo que contendría este archivo seria un menú programado para ciertos archivos, de este modo si necesito modificar el menú no tengo que archivo por archivo.

Ejemplo:

Documento txt:
<!-- Menú de los archivos 1, 5-7, 9 -->

<ul>
<li>Enlace 1</li>
<li>Enlace 2</li>
<li>Enlace 3</li>
<li>Enlace 4</li>
<li>Enlace 5</li>
</ul>

HTML:
<!-- Menu x -->

   Introduce aquí el contenido del documento txt

Obviamente, para introducir el contenido del archivo txt dentro del HTML puede ser usando Javascript, php, cualquier código, pero no se como se hace. Así que lo que solicito en este hilo es la información para poder realizar esa acción.
Dejen meterme en su tema, mi pregunta principal seria que soluciona el adoptar este sistema de menus en archivo txt.

Si lo que quieres son menus personalizados para cada seccion o parte de tu web, sin hacer algo tan elaborado, yo implementaria en un solo archivo php todos los links que quiero usar, y utilizar funciones para cada seccion, por ejemplo:

<?php
# Enlaces De La Web X
# 

function menu($seccion='index'){
	switch($seccion){
		case 'seccio-x':
			/* links de la seccion X*/
			$links='<ul>
						<li>Enlace 1</li>
						<li>Enlace 2</li>
						<li>Enlace 3</li>
						<li>Enlace 4</li>
						<li>Enlace 5</li>
					</ul>';
		
		break;
		case 'seccio-y':
			/* links de la seccion Y*/
			$links='<ul>
						<li>Enlace 1</li>
						<li>Enlace 2</li>
						<li>Enlace 3</li>
						<li>Enlace 4</li>
						<li>Enlace 5</li>
					</ul>';
		
		break;
		case 'seccio-z':
			/* links de la seccion Z*/
			$links='<ul>
						<li>Enlace 1</li>
						<li>Enlace 2</li>
						<li>Enlace 3</li>
						<li>Enlace 4</li>
						<li>Enlace 5</li>
					</ul>';
				
		break;
		default:
			/* links del index por default */
			$links='<ul>
						<li>Enlace 1</li>
						<li>Enlace 2</li>
						<li>Enlace 3</li>
						<li>Enlace 4</li>
						<li>Enlace 5</li>
					</ul>';
	}

	echo $links;
}

?>

entonces para llamar a cualquier menu seria tan facil como incluir el archivo que contiene todos los menus y despues simplemente llamar a la funcion menu con la seccion indicada:

<?php
include('archivo_de_links_con_ruta_absoluta.php');
# ruta Absuluta por ejemplo /home/usuario/public_html/links.php
?>

<!DOCTYPE html>
<html lang="es">
<head>
</head>
<body>
    <nav>
      <?php 
        menu('seccion-x');
      ?>
    </nav>
</body>
</html>

Asi lo aria yo si tubiera que utilizar algo como lo que mencionas.
Gracias por la información serverdns. Probare a ver si implemento el código y que funcione. ¿No daria problema el subir con la ruta absoluta al servidor? (dado que la ruta no es la misma cuando este se sube al servidor)

Skaparate, el código que me facilitaste lo probe y no me funcion. Pongo las etiquetas del PHP de manera correcta pero el navegador cuando lo ejecuto (con un emulador de php) me coloca todo el contenido PHP como un comentario HTML.
Mi recomendacion es que todas las pruebas cuando trabajes con PHP las realices en un servidor, y la ruta absoluta debe ser la del servidor donde se ejecuta de lo contrario no se encontrara el archivo, dado que utilizas directorios deberas utilizar rutas absolutas al incluir los archivos de PHP para evitar errores.

No se que tan grande sea tu web, pero el hecho de utilizar directorios para las secciones, y dentro de estos los archivos de la seccion y su archivo de menu txt, se me hace muy complicado de entender y cuanto mas valla creciendo la web te llenaras de mas y mas archvios, si tu web sera grande y se actualizara constantemente lo mejor y mas recomendable es usar base de datos para todo el contenido de la web.
Buenas:

Decir que es una página web pequeña, pero intentare tener todos los consejos en mente para poco a poco ir mejorando.

El código que me pasaste lo he probado (con el emulador de PHP). Me pasa lo mismo que con el código de skaparate, el emulador me coloca el código entre las etiquetas de comentario de HTML. Intentare subirlo al servidor y probar desde alli.
alex222en escribió:Buenas:

Decir que es una página web pequeña, pero intentare tener todos los consejos en mente para poco a poco ir mejorando.

El código que me pasaste lo he probado (con el emulador de PHP). Me pasa lo mismo que con el código de skaparate, el emulador me coloca el código entre las etiquetas de comentario de HTML. Intentare subirlo al servidor y probar desde alli.

Hola:

He probado el código que me has pasado, junto con el que me paso skaparate, los dos los he subido al servidor pero a la hora de ejecutarlos el servidor los devuelve entre comentarios de HTML

Ej:

Esta así: <?php mi código... ?>

El servidor me devuelve: <!--?php mi código... ?-->

¿A que se puede deber esto?
la principal causa es que el servidor no esta configurado para ejecutar php embebido en paginas html, y con extencion .html, esto se soluciona cambiando la extencion de .html a .php o añadir la directiva al archivo .htaccess para ejecutar el php en las paginas .html

# Directiva para ejecutar PHP en HTML
AddType application/x-httpd-php .html .htm

Añadir la linea anterior a un archivo .htaccess y subirlo a la raiz de tu sitio deberia solucionar el problema, o cambiar la extencion de tus archivos a .php
Agradecerte serverdns por la ayuda. Ahora tengo la siguiente duda, los enlaces se crean correctamente, pero los estilos no se aplican al menu; me imagino que sea por cosa de que los enlaces entran desde el php (y no como estaba antes directo en el HTML), ¿Como puedo hacer que los estilos se apliquen al menu?
No, si los estilos no se aplican debe haber algo mal en el codigo html generado, ya que no tiene nada que ver como son generados los enlaces, algun detalle se te debe estar pasando, incluir la hoja de estilos quizas, quizas los identificadores o las clases de los enlaces deben estar erroneos.

si copiaste y pegaste los enlaces de como estaban en el html al archivo php deberia funcionar, te sigiero que cuando realices una pregunta debes tantos datos he ifnormacion como sea posible, porque preguntas cosas en las que no se te puede ayudar con claridad porque desconocemos completamente la situacion, por ejemplo tu ultima pregunta sobre los estilos, mi respuesta para esa pregunta en particular seria hacerlos Bien, ya que desconosco completamente tu codigo como para decirte donde podria estar el error.
gracias, ya está mi error. no tengo el código delante ahora mismo para confirmar que es ese error, pero si no me acuerdo mal ya sé dónde estás muchas gracias por la ayuda prestada
Por cierto, al editar la extensión del archivo ¿el servidor sigue reconociendo que debe ejecutar el archivo con el nombre index o tengo que cambiar alguna configuración?
Generalmente el servidor esta configurado para mostrar el archivo index.html, index.htm o index.php cualquiera que encuentre, y si existen los tres se ejecutara dependiendo del orden en la configuracion:

DirectoryIndex index.html index.htm index.php

El orden esta dado por la linea anterios en la configuracion, claro para un servidor con Apache, se buscara el index.html, si no se encuentra se busca el index.htm, si tampoco se encuentra se busca index.php y si tampoco se encuentra enconces se listara el directorio siempre y cuando no se especifique otra configuracion.
Buenas:

Tengo el código del siguiente modo:

HTML:
<head>

<?php include ('C:\Users\alex222en\Desktop\Carpetas\web\ICS Media queries\menu.php');?>

</head>

<body>

<nav>
<?php menu ('index');?>
</nav>

</body>

Y el PHP así:
<?php
# Enlaces De La Web X

function menu ($seccion='index') {
    
    switch($seccion){
        
        case 'carpeta-1':
            /* links de la carpeta-1*/
            $links='<ul class="nav">
                        <li><a href="../index.php">Home</a></li>

                        <li><a href="../servicios/servicios.php">Serviços</a></li>

                        <li><a href="../empresa/empresa.php">Empresa</a></li>

                        <li><a href="../productos/productos.php">Produtos</a>
                            
                            <ul>

                                <li><a href="#">Plataformas</a>
                                
                                    <ul>
                                        <li><img src="../imagenes/complementos/com_g.jpg" alt="Plataforma de trabajo"><a href="../productos/familia_2/trabajo.php">Trabalho</a></li>
                                        <li><img src="../imagenes/complementos/com_10.jpg" alt="Plataforma de descarga"><a href="../productos/familia_2/descarga.php">Descarga</a></li>
                                    </ul>

                                </li>

                                <li><a href="#">Caçamba/Balde</a>

                                    <ul>
                                        <li><img src="../imagenes/complementos/com_12.jpg" alt="Caçamba de concreto"><a href="../productos/familia_1/concreto.php">Concreto</a></li>
                                        <li><img src="../imagenes/complementos/com_15.jpg" alt="Caçamba de entulho"><a href="../productos/familia_1/entulho.php">Entulho</a></li>
                                    </ul>

                                </li>

                                <li><a href="#">Minigruas</a>

                                    <ul>
                                        <li><img src="../imagenes/complementos/com_19.jpg" alt="Minigrua torre"><a href="../productos/familia_3/torre.php">Minigrua Torre</a></li>
                                        <li><img src="../imagenes/complementos/com_16.jpg" alt="Minigrua tripe"><a href="../productos/familia_3/tripode.php">Minigrua Tripé</a></li>
                                        <li><img src="../imagenes/complementos/com_17.jpg" alt="Guincho de coluna"><a href="../productos/familia_3/gancho.php">Guinchos</a></li>
                                        <li><img src="../imagenes/complementos/com_18.jpg" alt="Prolongador de Minigrua"><a href="../productos/familia_3/prolongador.php">Prolongadores</a></li>
                                    </ul>

                                </li>
                                <li><img src="../imagenes/complementos/com_5.jpg" alt="Garfo paleteiro"><a href="../productos/pinza.php">Garfos</a></li>
                                <li><img src="../imagenes/complementos/com_pro_car_1.jpg" alt="Carro paleteiro"><a href="../productos/carro.php">Carros Paleteiros</a></li>

                            </ul>
                
                        </li>

                        <li><a href="../contacto/contacto.php">Contato</a></li>

                    </ul>'
                    ;
        
            break;

        case 'carpeta-2':
            $links='<ul class="nav">
                    <li><a href="../../index.php">Home</a></li>

                    <li><a href="../../servicios/servicios.php">Serviços</a></li>

                    <li><a href="../../empresa/empresa.php">Empresa</a></li>

                    <li><a href="../../productos/productos.php">Produtos</a>
                        
                        <ul>

                            <li><a href="#">Plataformas</a>
                            
                                <ul>
                                    <li><img src="../../imagenes/complementos/com_g.jpg" alt="Plataforma de trabajo"><a href="../../productos/familia_2/trabajo.php">Trabalho</a></li>
                                    <li><img src="../../imagenes/complementos/com_10.jpg" alt="Plataforma de descarga"><a href="../../productos/familia_2/descarga.php">Descarga</a></li>
                                </ul>

                            </li>

                            <li><a href="#">Caçamba/Balde</a>

                                <ul>
                                    <li><img src="../../imagenes/complementos/com_12.jpg" alt="Caçamba de concreto"><a href="../../productos/familia_1/concreto.php">Concreto</a></li>
                                    <li><img src="../../imagenes/complementos/com_15.jpg" alt="Caçamba de entulho"><a href="../../productos/familia_1/entulho.php">Entulho</a></li>
                                </ul>

                            </li>

                            <li><a href="#">Gruas</a>

                                <ul>
                                    <li><img src="../../imagenes/complementos/com_19.jpg" alt="Minigrua torre"><a href="../../productos/familia_3/torre.php">Minigrua Torre</a></li>
                                    <li><img src="../../imagenes/complementos/com_16.jpg" alt="Minigrua tripe"><a href="../../productos/familia_3/tripode.php">Minigrua Tripé</a></li>
                                    <li><img src="../../imagenes/complementos/com_17.jpg" alt="Guincho de coluna"><a href="../../productos/familia_3/gancho.php">Guinchos</a></li>
                                    <li><img src="../../imagenes/complementos/com_18.jpg" alt="Prolongador de Minigrua"><a href="../../productos/familia_3/prolongador.php">Prolongadores</a></li>
                                </ul>

                            </li>
                            <li><img src="../../imagenes/complementos/com_5.jpg" alt=""><a href="../../productos/pinza.php">Garfos</a></li>
                            <li><img src="../../imagenes/complementos/com_pro_car_1.jpg" alt=""><a href="../../productos/carro.php">Carros Paleteiros</a></li>

                        </ul>
            
                    </li>

                    <li><a href="../../contacto/contacto.php">Contato</a></li>

                </ul>'
            break;

        default:
            /* links del index por default */
            $links='<ul class="nav">
                        <li><a href="index.php">Home</a></li>

                        <li><a href="servicios/servicios.php">Serviços</a></li>

                        <li><a href="empresa/empresa.php">Empresa</a></li>

                        <li><a href="productos/productos.php">Produtos</a>
                            
                            <ul>

                                <li><a href="#">Plataformas</a>
                                
                                    <ul>
                                        <li><img src="imagenes/complementos/com_g.jpg" alt="Plataforma de trabajo"><a href="productos/familia_2/trabajo.php">Trabalho</a></li>
                                        <li><img src="imagenes/complementos/com_10.jpg" alt="Plataforma de descarga"><a href="productos/familia_2/descarga.php">Descarga</a></li>
                                    </ul>

                                </li>

                                <li><a href="#">Caçamba/Balde</a>

                                    <ul>
                                        <li><img src="imagenes/complementos/com_12.jpg" alt="Caçamba de concreto"><a href="productos/familia_1/concreto.php">Concreto</a></li>
                                        <li><img src="imagenes/complementos/com_15.jpg" alt="Caçamba de entulho"><a href="productos/familia_1/entulho.php">Entulho</a></li>
                                    </ul>

                                </li>

                                <li><a href="#">Minigruas</a>

                                    <ul>
                                        <li><img src="imagenes/complementos/com_19.jpg" alt="Minigrua torre"><a href="productos/familia_3/torre.php">Minigrua Torre</a></li>
                                        <li><img src="imagenes/complementos/com_16.jpg" alt="Minigrua tripe"><a href="productos/familia_3/tripode.php">Minigrua Tripé</a></li>
                                        <li><img src="imagenes/complementos/com_17.jpg" alt="Guincho de coluna"><a href="productos/familia_3/gancho.php">Guinchos</a></li>
                                        <li><img src="imagenes/complementos/com_18.jpg" alt="Prolongador de Minigrua"><a href="productos/familia_3/prolongador.php">Prolongadores</a></li>
                                    </ul>

                                </li>

                                <li><a href="#">Garfos</a>

                                    <ul>
                                        <li><img src="imagenes/complementos/com_gar_.jpg" alt="Garfo paleteiro"><a href="productos/familia_4/paletero.php">Paleteiros</a></img></li>
                                        <li><img src="imagenes/complementos/com_gar_.jpg" alt="Garfo Tesoura"><a href="productos/familia_4/tijera.php">Tesoura</a></img></li>
                                        <li><img src="imagenes/complementos/com_gar_.jpg" alt="Grampo"><a href="productos/familia_4/grapa.php">Grampos</a></img></li>
                                        <li><img src="imagenes/complementos/com_gar_.jpg" alt="Especiais"><a href="productos/familia_4/especial.php">Especiais</a></img></li>
                                    </ul>

                                </li>

                                <li><a href="#">Carros Paleteiros</a>

                                    <ul>
                                        <li><img src="imagenes/complementos/com_car_.jpg" alt="Carro paleteiro todo terreno"><a href="productos/familia_5/4x4.php">Todo Terreno</a></img></li>
                                        <li><img src="imagenes/complementos/com_car_.jpg" alt="Carro paleteiro de armazen"><a href="productos/familia_5/almacen.php">Armazem</a></img></li>
                                    </ul>

                                </li>

                                <li><img src="imagenes/complementos/com_man_1.jpg" alt="Manipulador Telescópico"><a href="productos/telescopica.php">Manipualor Telescópico</a></img></li>

                            </ul>
                
                        </li>

                        <li><a href="contacto/contacto.php">Contato</a></li>

                    </ul>'
                    ;
    }

    echo $links;
}

?>

Cuando lo ejecuto en el servidor, en los "href" la extensión del archivo es cambiada a ".html", no se si sera cosa de mi ordenador, pero lo comento para ver porque puede ser.
Lo mas probable es que sea un problema de cache del navegador, generalmente los navegadores guardan en su cache los archivos html para carga mas rapida, debes borrar la cache y ver si el problema continua.

Ahora veo que usas ../../ y ../ para las imagenes y links mi recomendacion es que uses el nombre de dominio en su lugar.
Buenas:

Decir que el código que me has pasado me ha funcionado perfectamente, ahora tengo otro problema para ejecutar estos archivos php. Si un ordenador nunca ha entrado a la página, su navegador directamente abre el documento index.php, pero en los ordenadores que ya han entrado y tienen un registro en la cache abre el documento index.html (aunque este ya no exista en el servidor, y comprobado que realmente no existe) ¿Como puedo forzar a que, aun teniendo el registro cache, abra el documento index.php?
Generalmente cuando la cache se refresca devez en cuando, la cache sirve para acelerar la carga de una pagina, esto es util en paginas que tienen mucho contenido, pero en lo personal siempre evito la cache.

para forzar abrir el archivo index.php puedes modificar la directiva DirectoryIndex del archivo .htaccess y dejar solo index.php, dado que no puedes controlar la cache de los equipos que ya cuenta con una version de tu web en su cache, debes indicarle al navegador que la pagina ha sido modificada o a expira enviando las cabeceras correctas desde php esto forzara al navegador a releer la pagina web y actualizar su cache.

yo utilizo estas cabeceras para evitar la cache:
header("Expires: ".gmdate('D, d M Y H:i:s',time()-3600000)." GMT");
header("Last-Modified: ".gmdate('D, d M Y H:i:s')." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

Dado que le indico al navegador con estas cabeceras que la pagina expiro hace 1000 horas y que fue modificada en el instante que es solisitada esto forza al navegador a mostrar siempre la pagina actualizada, estas cabeceras deben ser enviadas entes de imprimir cualquier contenido, esto quiere decir que debe ejecutarse antes de cualquier codigo que genere una salida al navegador.
serverdns escribió:Generalmente cuando la cache se refresca devez en cuando, la cache sirve para acelerar la carga de una pagina, esto es util en paginas que tienen mucho contenido, pero en lo personal siempre evito la cache.

para forzar abrir el archivo index.php puedes modificar la directiva DirectoryIndex del archivo .htaccess y dejar solo index.php, dado que no puedes controlar la cache de los equipos que ya cuenta con una version de tu web en su cache, debes indicarle al navegador que la pagina ha sido modificada o a expira enviando las cabeceras correctas desde php esto forzara al navegador a releer la pagina web y actualizar su cache.

yo utilizo estas cabeceras para evitar la cache:
header("Expires: ".gmdate('D, d M Y H:i:s',time()-3600000)." GMT");
header("Last-Modified: ".gmdate('D, d M Y H:i:s')." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

Dado que le indico al navegador con estas cabeceras que la pagina expiro hace 1000 horas y que fue modificada en el instante que es solisitada esto forza al navegador a mostrar siempre la pagina actualizada, estas cabeceras deben ser enviadas entes de imprimir cualquier contenido, esto quiere decir que debe ejecutarse antes de cualquier codigo que genere una salida al navegador.

En donde coloco esas cabeceras?, en el index.php o en el .htaccess?

Perdona mi ignorancia, pero es que nunca ande modificando documentos como el htaccess ni cosas que estuviesen en el servidor, solo las páginas web en si.
Las cabeceras se envian atravez de PHP por lo tanto tienes que colocarlas en los archivos php de tu pagina que no quieres que esten en la cache y antes de cualquier codigo que te genere una salida al navegador.