Mod-Rewrite archivos de carga detrás de la DocumentRoot
-
08-06-2019 - |
Pregunta
Estoy usando .htaccess
y mod_rewrite
para que apunten a los archivos que se encuentran detrás de la DocumentRoot.Mi estructura de carpetas se parece a esto:
home/
webroot/
other_files/
Tengo un .htaccess
archivo en webroot con el siguiente contenido:
RewriteEngine on RewriteRule ^(.*)$ /home/other_files/$1
Si intento acceder http://example.com/file.html Recibo el siguiente error:
La dirección URL solicitada home/other_files/file.html no se encontró en este servidor.
Es incluso posible cargar archivos que están detrás de la DocumentRoot?Si es así, ¿alguien me apunte en la dirección correcta?
Solución
Creo que usted necesita para agregar una sección con
<Directory "/home/other_files">
(options)
</Directory>
para la configuración de su servidor antes de apache será capaz de servir nada de ella.Para un ejemplo, mi DocumentRoot /var/www, pero hay esta sección en el valor predeterminado disponible en el sitio:
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Entonces, usted puede reescribir una URL para acceder a /doc/ y el servidor sabe donde conseguir los archivos de.
Otros consejos
Solo para que lo sepan el por qué de que la regla no funciona:
La razón por la que no es capaz de reescribir a /home/other\_files/file.html
es que mod_rewrite es el análisis de la ruta de acceso como /home/webroot/home/other\_files/file.html
ya que desde el mod_rewrite el punto de vista de la anterior barra es equivelant a su raíz de los documentos de /home/webroot
.
Ryan Ahearn sugerencia es una decente, y es probable que la ruta que desea ir.
El crédito va a Ryan Aheam, pero me voy a explicar.Soy un principiante y aún con Ryan respuesta que he tenido que experimentar con un par de cosas para obtener la sintaxis de la derecha.
Yo quería que mi DocumentRoot a ser mi cakephp directorio.Pero entonces tuve una Mantis Bug tracker que se acaba de regulares de php y no en la cakephp directorio.El los archivos de abajo tengo el siguiente trabajo.
http://www.my_website.com :servido por /var/www/cakephp
http://www.my_website.com/mantisbt :servido por /var/www/html/mantisbt
Archivo /etc/httpd/conf/httpd.conf
Alias /mantisbt/ "/var/www/html/mantisbt/"
<Directory "/var/www/html/">
AllowOverride All
</Directory>
<VirtualHost *:80>
ServerAdmin me@my_email.com
DocumentRoot /var/www/cakephp
ServerName my_website.com
<Directory /var/www/cakephp/>
AllowOverride All
</Directory>
</VirtualHost>
Archivo /var/www/cakephp/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^mantisbt/?$ /mantisbt/ [NC,L]
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>