Integration with Apache

La extensión Hyperwave se emplea mejor cuando PHP se compila como un módulo de Apache. En tal caso, el servidor de Hyperwave subyacente se puede ocultar a los usuarios casi completamente si Apache utiliza su motor de reescritura. Las siguientes instrucciones lo explican.

Ya que la integración del soprte de PHP con Hyperwave en Apache tiene como objeto el reemplazo la solución nativa de Hyperwave basada en Wavemaster, asumiremos que el servidor Apache solamente servirá como una interfaz web de Hyperwave en estos ejemplos. Esto no es necesario, aunque simplifica la configuración. El concepto es bastante sencillo. Lo primero que se necesita es un script de PHP que evalúe la variable $_ENV['PATH_INFO'] y trate su valor como el nombre de un objeto de Hyperwave. Llamemos a este script 'Hyperwave'. El URL http://su.nombre_de_host/Hyperwave/nombre_del_objeto haría que devolviera el objeto de Hyperwave con el nombre 'nombre_del_objeto'. Dependiendo del tipo de objeto, el script ha de reaccionar en consecuencia. Si es una colección, probablemente devolverá el primer hijo. Si es un documento, devolverá el tipo MIME y el contenido. Se puede lograr una pequeña mejora si se emplea el motor de reescritura de Apache. Desde el punto de vista del usuario sería más sencillo si el URL http://su.nombre_de_host/nombre_del_objeto devolviera el objeto. La regla de reescritura es bastante sencilla:

RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
Ahora, cada URL se relaciona con un objeto del servidor Hyperwave. Esto ocasiona un sencillo problema a resolver. No hay forma de ejecutar un script distinto al del 'Hyperwave', p.ej. de búsqueda. Esto se puede solucionar con otra regla de reescritura como la siguiente:
RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
Esto reservará el directorio /usr/local/apache/htdocs/hw para scripts adicionales y otros ficheros. Asegúrese de que esta regla se evalúa antes de la anteriore. Hay un pequeño inconveniente: todos los objetos de Hyperwave cuyo nombre comience con 'hw/' serán ocultados. Por tanto, asegúrese de no utilizar tales nombres. Si fueran necesarios más directorios, p.ej. para imágenes, añada más reglas o colóquelos todos en un directorio. Antes de seguir estas instrucciones, no olvide activar el motor de reescritura con
RewriteEngine on
Serán necesarios scripts:
  • para devolver el objeto en sí
  • para permitir búsquedas
  • para identificarse
  • para establecer el perfil
  • uno por cada función adicional, como mostrar los atributos del objeto, para mostrar información sobre los usuarios, para mostrar el estado del servidor, etc.

Como alternativa al motor de reescritura, también se puede considerar el uso de la directiva ErrorDocument de Apache, teniendo en cuenta que las páginas redirigidas de ErrorDocument no pueden recibir datos POST.