He reescrito todo este post porque me di cuenta de que originalmente no tenía mucho sentido (sería un comentario divertido para un programa).
Estoy desarrollando un proyecto web en localhost con una estructura de directorios muy organizada y profundamente anidada.
Mi directorio de proyecto actual:
# Absolute path
/Users/Username/Sites/myproject/
# Localhost path
localhost/~Username/myproject/
Con los archivos PHP, puedo especificar que se incluya la ruta absoluta:
include_once '/Users/Username/Sites/myproject/config/scripts/php/foo.php';
Sin embargo, con las etiquetas de anclaje HTML, href CSS y src de JavaScript, no se puede usar la ruta absoluta. Por ejemplo:
La siguiente etiqueta de anclaje que utiliza una ruta absoluta al archivo:
<a href="/Users/Username/Sites/myproject/blog/">Blog</a>
Al hacer clic en el enlace se produce un error 404:
The requested URL /Users/Username/Sites/myproject/blog/ was not found on this server.
Con el siguiente ejemplo, mirando la URL en la página 404, puedo ver que el servidor intentó buscar el archivo en el directorio raíz de localhost, en lugar del directorio raíz de mi máquina:
[http://localhost/Users/Username/Sites/myproject/blog/]
Bastante fácil, solo apuntaré el archivo usando una ruta absoluta en el directorio localhost:
<a href="/~Username/myproject/blog/">Blog</a>
¡Ah! ¡Una solución! De hecho, descubrí esta solución mientras realizaba esta edición en la publicación y, aunque funcionará en todos mis directorios, sin importar cuán anidados estén, esto causará algunos problemas serios en el futuro. En primer lugar, este método no funciona para PHP incluido, PHP comienza su búsqueda de archivos desde la raíz de la máquina, no desde el servidor web. Esto requiere rutas absolutas que comiencen hasta el nivel /User
, que deberán cambiarse cuando lo suba a mi host de terceros. Puedo pensar en otro caso, mucho peor, en el que subo todos los archivos a un host de terceros, y tengo que revisar y cambiar todos los enlaces, a algo como:
<a href="/blog/">Blog</a>
Dado que myproject
será la carpeta raíz ( www.myproject.com
). Claro, cambiar algunas ubicaciones href, src y php include no será tan malo, pero tendré que cambiar cada ruta en cada archivo, lo que consumirá mucho tiempo y, según el tamaño de este proyecto , casi imposible. Y luego, cuando la pesadilla tenga que editar un archivo o dos, cambiar algunos CSS, etc., descargaré los archivos relacionados a través de FTP y luego tendré que cambiar todas las rutas de nuevo para que funcionen. en mi máquina local. Esto sería una pesadilla.
Entonces, mi pregunta es, ¿cómo puedo configurar el servidor web OSX Apache para que reconozca a myproject
como la carpeta raíz en el directorio de sitios? ¿Es tan simple como editar DocumentRoot
en httpd.conf
? No me atrevo a editar ese archivo porque si arruino algo estoy jodido. Incluso si es tan simple como cambiar el DocumentRoot
, ¿qué pasa si estoy trabajando en varios proyectos a la vez? No voy a querer entrar cada vez y cambiar DocumentRoot
solo para que mis caminos funcionen. Creo que sería genial que cada directorio de nivel superior en la carpeta Sites
sea su propia carpeta raíz para cualquier archivo o directorio dentro de él, si eso tiene algún sentido. De todos modos, cualquier consejo ayudaría, estoy muerto en el agua ahora mismo.