2011-06-03 25 views
7

En un nuevo proyecto, un sitio web tiene un conjunto de páginas html estáticas. El propietario necesita convertirlos a dinámicos. Cada página tiene: una sección de texto, una pequeña foto más algunos enlaces hacia otras páginas, relacionadas con esta.reescritura htaccess en urls sin patrón común

Todos estos puedo poner en la base de datos y crear una página dinámica (php).

Mi problema es que cada página estática es única, no hay un patrón común en la url. Y hay 860 de esas páginas en este momento. puedo tener una URL como:

folder1/folder2/item1.htm 
folder1/folder2/folder3/item2.htm 
folder1/folder2/folder2-fodler3/item3.htm 

Estos 3 son los patrones más comunes hasta el momento (que sirven alrededor de 650 direcciones URL fuera de la 860).

Cada nombre de carpeta es en realidad una categoría/subcategoría/palabra clave que puedo usar para determinar las propiedades de mi artículo. Como regla general, las primeras 2 carpetas (carpeta1 y carpeta2) son la categoría y subcategoría del producto, mientras que las siguientes (carpeta 3 y después) determinan la sección (si corresponde) del artículo. Espero que esto tenga sentido.

Así, un pensamiento es utilizar el viejo, estático, URL como una base de datos de archivado y combinar esta para servir el contenido, algo así como:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /script.php?path=$1 [L] 

Creo que poner esta regla al final de mis reglas de reescritura garantizarán que todas las demás reescrituras no se vean afectadas.

¿Es aconsejable este enfoque? ¿O hay otra manera? Algo más robusto/seguro/ligero?

+2

Por su descripción, los archivos parecen pequeños y relativamente bien estructurado. Una solución a más largo plazo podría ser analizar los archivos, almacenar los valores en la base de datos y publicar los datos en una página dinámica. Esto haría que todo sea realmente dinámico, es decir, el contenido y la presentación serían fáciles de cambiar. (Uh, acabo de ver que esto no es exactamente una pregunta nueva. De todos modos) –

Respuesta

2

El método que usted describe es bastante común y bien:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /script.php?path=$1 [L] 

Puede aclarar que por analizar la cadena solicitud original en su script PHP directamente, lo que es más directo. Mira lo que ofrece tu servidor en la matriz superglobal PHP $_SERVER, p. ejecutar var_dump($_SERVER);. Ya encuentre algo que es similar a su $_GET['path'] que está haciendo uso de, este es generalmente más interoperable:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /script.php [L] 

Además, dependiendo de la versión del servidor Apache, puede ser simplificado más adelante como:

FallbackResource /script.php 

Esto le ahorra el archivo de comprobación adicional en el RewriteCond que utiliza actualmente.

0

Sólo Uso

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^/script.php?path=$1 [L] 
+0

Esa regla de reescritura no tiene un objetivo (a menos que quieras reescribir el URI en '[L]') –

Cuestiones relacionadas