Pregunta

quiero tomar las solicitudes de archivos que faltan en una carpeta específica y redirigirlos a program.php en esa carpeta.

Este es un programa voy a utilizar una gran cantidad de diferentes lugares, y yo preferiría evitar especificar el nombre de la carpeta en el archivo .htaccess.

He tratado simplemente poner:

errordocument 404 program.php

pero el resultado es que el browser imprime "program.php" y no ejecuta program.php.

entiendo ¿Por qué esto está sucediendo: en base a la documentación a http://httpd.apache.org/docs/2.0/mod/core.html , de URL que no empieza por una barra o http se interpretan como un mensaje de texto.

La cuestión es cómo superar esta limitación para poder acceder a la misma carpeta.

¿Fue útil?

Solución

Terminé usando RewriteRule en lugar de ErrorDocument

rewriteengine on
rewritecond %{request_filename} !-f
rewriterule ^(.+).jpg$ program.php?i=$1.jpg [L]

La segunda línea verifica que el archivo no existe, por lo que las imágenes existentes se mostrarán correctamente.

Otros consejos

¿Quieres:

ErrorDocument 404 /program.php

De acuerdo con la docs , "URLs pueden empezar con una barra (/) para web caminos locales (en relación con el DocumentRoot) ".

¿Usted ha intentado un camino (relativa o absoluta)? Si usted lo hace relativo, que debe ser a la raíz del servidor web, servidor de la cual su propósito fuerzas.

ErrorDocument 404 /program.php

Si usted tiene sólo un pequeño número de carpetas, es probable que pueda utilizar:

<Directory /path/a>
   ErrorDocument 404 /a/program.php
</Directory>
<Directory /path/b>
   ErrorDocument 404 /b/program.php
</Directory> 
<Directory /path/c>
   ErrorDocument 404 /c/program.php
</Directory>

Si ello no es viable, entonces usted debe sólo tienen un program.php en la raíz y tienen que responder de manera diferente dependiendo del contenido de la variable de entorno REDIRECT_URL, que es de $ _SERVER [ 'REDIRECT_URL'] en php.

¿Por qué no tienen un ErrorDocument manejar todos los errores en todas las carpetas? Podría ser mucho más limpio de esa manera. A continuación, puede manejar el caso individual utilizando $ _SERVER [ "REQUEST_URI"] que debe contener la solicitud original, si no recuerdo mal.

¿Qué hay de esto. En su ruta de raíz, se configura un archivo error.php genérico. Sin embargo, lo único que hace es analizar la REQUEST_URI, comprobar la ruta, ver si hay una error.php aduana allí, y que lo incluya. Podría trabajar, ¿eh?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top